網(wǎng)上有很多關(guān)于pos機(jī)演示教程, 阿克曼結(jié)構(gòu)移動機(jī)器人的gazebo仿真的知識,也有很多人為大家解答關(guān)于pos機(jī)演示教程的問題,今天pos機(jī)之家(www.shineka.com)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
pos機(jī)演示教程
第四章、用xacro優(yōu)化URDF并配置gazebo仿真插件
1?前言
上節(jié)用簡易模型寫了一個小車的URDF代碼,這一節(jié)將用xacro對其進(jìn)行優(yōu)化,這里我并不打算用宏對參數(shù)進(jìn)行封裝,因為我個人覺得這樣看起來會比較直觀,方便讀者閱讀。
2?配置主xacro文件
新建racecar.xacro文件,將上一節(jié)racebot.urdf中的代碼復(fù)制過來并進(jìn)行修改,整體代碼如下:
<?xml version="1.0" encoding="utf-8"?><robot name="racebot" xmlns:xacro="http://www.ros.org/wiki/xacro"> <xacro:include filename="$(find racebot_description)/urdf/ackermann/macros.xacro" /> <link name="base_footprint"> </link> <link name="base_link"> <visual> <geometry> <box size="0.28 0.1 0.03"/> <!-- <mesh filename="package://tianracer_description/meshes/base_link.STL" /> --> </geometry> <!-- <origin xyz="0 0 -0.023" rpy="0 0 0" /> --> <origin xyz="0 0 0" rpy="0 0 0" /> <material name="yellow"> <color rgba="0.8 0.3 0.1 0.5" /> </material> </visual> <collision> <geometry> <box size="0.28 0.1 0.03" /> </geometry> <origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" /> </collision> </link> <joint name="base_link2base_footprint" type="fixed"> <parent link="base_footprint" /> <child link="base_link"/> <origin xyz="0 0 0.032" rpy="0 0 0" /> </joint> <link name="base_inertia"> <inertial> <origin xyz="0 0 0" /> <mass value="4" /> <inertia ixx="0.0264" ixy="0" ixz="0" iyy="0.0294" iyz="0" izz="0.00364" /> </inertial> </link> <joint name="chassis_inertia_joint" type="fixed"> <origin xyz="0 0 0" rpy="0 0 0" /> <parent link="base_link" /> <child link="base_inertia" /> </joint> <link name="left_steering_hinge"> <visual> <geometry> <cylinder radius="0.01" length="0.005" /> <!-- <sphere radius="0.015" /> --> </geometry> <origin xyz="0 0 0" rpy="1.57 0 0" /> <material name="black"> <color rgba="0.0 0.0 0.0 1.0" /> </material> </visual> <collision> <geometry> <cylinder radius="0.01" length="0.005" /> <!-- <sphere radius="0.015" /> --> </geometry> <origin xyz="0.0 0.0 0.0" rpy="1.57 0.0 0.0" /> </collision> <inertial> <origin xyz="0 0 0" /> <mass value="0.5" /> <inertia ixx="1.35E-05" ixy="0" ixz="0" iyy="1.35E-05" iyz="0" izz="2.5E-05" /> </inertial> </link> <joint name="left_steering_hinge_joint" type="revolute"> <parent link="base_link" /> <child link="left_steering_hinge" /> <origin xyz="0.13 0.065 0" /> <axis xyz="0 0 1" /> <limit lower="-0.6" upper="0.6" effort="5.0" velocity="1000.0"/> </joint> <xacro:steering_hinge_transmission name="left_steering_hinge" /> <link name="left_front_wheel"> <visual> <geometry> <cylinder radius="0.033" length="0.02" /> </geometry> <origin xyz="0 0 0" rpy="1.57 0 0" /> <material name="black"> <color rgba="0.0 0.0 0.0 1.0" /> </material> </visual> <collision> <geometry> <cylinder radius="0.032" length="0.02" /> </geometry> <origin xyz="0.0 0.0 0.0" rpy="1.57 0.0 0.0" /> </collision> <inertial> <origin xyz="0 0 0" /> <mass value="2.0" /> <inertia ixx="6.64E-04" ixy="0" ixz="0" iyy="6.64E-04" iyz="0" izz="1.02E-03" /> </inertial> </link> <joint name="left_front_wheel_joint" type="continuous"> <parent link="left_steering_hinge" /> <child link="left_front_wheel" /> <origin xyz="0 0.025 0" /> <axis xyz="0 1 0" /> <limit effort="10" velocity="1000" /> </joint> <xacro:wheel_transmission name="left_front_wheel" /><link name="right_steering_hinge"> <visual> <geometry> <cylinder radius="0.01" length="0.005" /> </geometry> <origin xyz="0 0 0" rpy="1.57 0 0" /> <material name="black"> <color rgba="0.0 0.0 0.0 1.0" /> </material> </visual> <collision> <geometry> <cylinder radius="0.01" length="0.005" /> </geometry> <origin xyz="0.0 0.0 0.0" rpy="1.57 0.0 0.0" /> </collision> <inertial> <origin xyz="0 0 0" /> <mass value="0.5" /> <inertia ixx="1.35E-05" ixy="0" ixz="0" iyy="1.35E-05" iyz="0" izz="2.5E-05" /> </inertial> </link> <joint name="right_steering_hinge_joint" type="revolute"> <parent link="base_link" /> <child link="right_steering_hinge" /> <origin xyz="0.13 -0.065 0" /> <axis xyz="0 0 1" /> <limit lower="-0.6" upper="0.6" effort="5.0" velocity="1000.0"/> </joint> <xacro:steering_hinge_transmission name="right_steering_hinge" /> <link name="right_front_wheel"> <visual> <geometry> <cylinder radius="0.033" length="0.02" /> </geometry> <origin xyz="0 0 0" rpy="1.57 0 0" /> <material name="black"> <color rgba="0.0 0.0 0.0 1.0" /> </material> </visual> <collision> <geometry> <cylinder radius="0.032" length="0.02" /> </geometry> <origin xyz="0.0 0.0 0.0" rpy="1.57 0.0 0.0" /> </collision> <inertial> <origin xyz="0 0 0" /> <mass value="2.0" /> <inertia ixx="6.64E-04" ixy="0" ixz="0" iyy="6.64E-04" iyz="0" izz="1.02E-03" /> </inertial> </link> <joint name="right_front_wheel_joint" type="continuous"> <parent link="right_steering_hinge" /> <child link="right_front_wheel" /> <origin xyz="0 -0.025 0" /> <axis xyz="0 1 0" /> <limit effort="10" velocity="1000" /> </joint> <xacro:wheel_transmission name="right_front_wheel" /> <link name="left_rear_wheel"> <visual> <geometry> <cylinder radius="0.032" length="0.02" /> </geometry> <origin xyz="0 0 0" rpy="1.57 0 0" /> <material name="black"> <color rgba="0.0 0.0 0.0 1.0" /> </material> </visual> <collision> <geometry> <cylinder radius="0.032" length="0.02" /> </geometry> <origin xyz="0.0 0.0 0.0" rpy="1.57 0.0 0.0" /> </collision> <inertial> <origin xyz="0 0 0" /> <mass value="2.0" /> <inertia ixx="6.64E-04" ixy="0" ixz="0" iyy="6.64E-04" iyz="0" izz="1.02E-03" /> </inertial> </link> <joint name="left_rear_wheel_joint" type="continuous"> <parent link="base_link" /> <child link="left_rear_wheel" /> <origin xyz="-0.13 0.09 0" /> <axis xyz="0 1 0" /> <limit effort="10" velocity="1000" /> </joint> <xacro:wheel_transmission name="left_rear_wheel" /> <link name="right_rear_wheel"> <visual> <geometry> <cylinder radius="0.032" length="0.02" /> </geometry> <origin xyz="0 0 0" rpy="1.57 0 0" /> <material name="black"> <color rgba="0.0 0.0 0.0 1.0" /> </material> </visual> <collision> <geometry> <cylinder radius="0.032" length="0.02" /> </geometry> <origin xyz="0.0 0.0 0.0" rpy="1.57 0.0 0.0" /> </collision> <inertial> <origin xyz="0 0 0" /> <mass value="2.0" /> <inertia ixx="6.64E-04" ixy="0" ixz="0" iyy="6.64E-04" iyz="0" izz="1.02E-03" /> </inertial> </link> <joint name="right_rear_wheel_joint" type="continuous"> <parent link="base_link" /> <child link="right_rear_wheel" /> <origin xyz="-0.13 -0.09 0" /> <axis xyz="0 1 0" /> <limit effort="10" velocity="1000" /> </joint> <xacro:wheel_transmission name="right_rear_wheel" /> <link name="camera"> <visual> <geometry> <box size="0.005 0.03 0.03"/> </geometry> <origin xyz="0 0 0" rpy="0 0 0" /> <material name="black"> <color rgba="0.0 0.0 0.0 1.0" /> </material> </visual> <collision> <geometry> <box size="0.005 0.03 0.03"/> </geometry> <origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" /> </collision> <inertial> <origin xyz="0 0 0" /> <mass value="0.05" /> <inertia ixx="6.64E-04" ixy="0" ixz="0" iyy="6.64E-04" iyz="0" izz="1.02E-03" /> </inertial> </link> <joint name="camera_joint" type="fixed"> <parent link="base_link" /> <child link="camera" /> <origin xyz="0.14851 0.0022137 0.0975" /> <axis xyz="0 0 1" /> </joint> <link name="real_sense"> <visual> <geometry> <box size="0.01 0.1 0.02"/> </geometry> <origin xyz="0 0 0" rpy="0 0 0" /> <material name="black"> <color rgba="0.0 0.0 0.0 1.0" /> </material> </visual> <collision> <geometry> <box size="0.01 0.1 0.02"/> </geometry> <origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" /> </collision> <inertial> <origin xyz="0 0 0" /> <mass value="0.05" /> <inertia ixx="6.64E-04" ixy="0" ixz="0" iyy="6.64E-04" iyz="0" izz="1.02E-03" /> </inertial> </link> <joint name="realsense_joint" type="fixed"> <parent link="base_link" /> <child link="real_sense" /> <origin xyz="0.19864 0.0038046 0.052021" /> <axis xyz="0 0 1" /> </joint> <link name="lidar"> <visual> <geometry> <cylinder radius="0.03" length="0.06" /> </geometry> <origin xyz="0 0 0" rpy="0 0 0" /> <material name="black"> <color rgba="0.0 0.0 0.0 1.0" /> </material> </visual> <collision> <geometry> <cylinder radius="0.03" length="0.06" /> </geometry> <origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" /> </collision> <inertial> <origin xyz="0 0 0" /> <mass value="0.1" /> <inertia ixx="6.64E-04" ixy="0" ixz="0" iyy="6.64E-04" iyz="0" izz="1.02E-03" /> </inertial> </link> <joint name="lidar_joint" type="fixed"> <parent link="base_link" /> <child link="lidar" /> <origin xyz="0.093603 0 0.12377" /> <axis xyz="0 0 1" /> </joint> <link name="imu"> <visual> <geometry> <box size="0.01 0.01 0.005"/> </geometry> <origin xyz="0 0 0" rpy="0 0 0" /> <material name="black"> <color rgba="0.0 0.0 0.0 1.0" /> </material> </visual> <collision> <geometry> <box size="0.01 0.01 0.005"/> </geometry> <origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" /> </collision> <inertial> <origin xyz="0 0 0" /> <mass value="0.05" /> <inertia ixx="6.64E-04" ixy="0" ixz="0" iyy="6.64E-04" iyz="0" izz="1.02E-03" /> </inertial> </link> <joint name="imu_joint" type="fixed"> <parent link="base_link" /> <child link="imu" /> <origin xyz="0 0 0.02" /> <axis xyz="0 0 1" /> </joint> <xacro:include filename="$(find racebot_description)/urdf/ackermann/racecar.gazebo" /></robot>
代碼起始和末尾添加了兩個文件,通過xacro封裝引用進(jìn)來。這兩個xacro文件是接下去要配置的傳動文件macros.xacro以及gazebo插件racecar.gazebo。
3?添加傳動transmission
創(chuàng)建macro.xacro文件,該代碼給前后輪以及前輪擺轉(zhuǎn)配置了傳動transmission元素,代碼如下:
<?xml version="1.0"?><robot name="racebot" xmlns:xacro="http://www.ros.org/wiki/xacro"><!-- transmission macros --><xacro:macro name="wheel_transmission" params="name"> <transmission name="${name}_transmission" type="SimpleTransmission"> <type>transmission_interface/SimpleTransmission</type> <joint name="${name}_joint"> <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface> </joint> <actuator name="${name}_motor"> <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface> <mechanicalReduction>1</mechanicalReduction> </actuator> </transmission></xacro:macro><xacro:macro name="steering_hinge_transmission" params="name"> <transmission name="${name}_transmission" type="SimpleTransmission"> <type>transmission_interface/SimpleTransmission</type> <joint name="${name}_joint"> <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface> </joint> <actuator name="${name}_motor"> <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface> <mechanicalReduction>1</mechanicalReduction> </actuator> </transmission></xacro:macro></robot>
值得注意的是,引用該文件時,要將路徑代碼放置到racecar.xacro代碼的最上端位置,如上代碼所示,否則將無法引用到,并且在需要添加傳動的link后面添加宏定義,以左前輪以及左前輪擺轉(zhuǎn)為例:
<xacro:wheel_transmission name="left_front_wheel" /> . . . <xacro:steering_hinge_transmission name="right_steering_hinge" />
4?配置gazebo插件
要讓小車在gazebo中仿真,并且讓小車能夠進(jìn)行建圖導(dǎo)航,需要給小車的攝像頭,激光雷達(dá)等link添加傳感器插件,下面將進(jìn)行配置,新建racecar.gazebo文件,開頭代碼:
<?xml version="1.0"?><robot name="racebot" xmlns:xacro="http://www.ros.org/wiki/xacro">。。。</robot>
配置各個link的顏色:
由于車輪實際上會接觸地面,因此會與地面發(fā)生物理相互作用,將各個link添加部件材料的附加信息,并且定義各個link的顏色信息。參考gazebo官網(wǎng) :http://gazebosim.org/tutorials/?tut=ros_urdf
<!-- Gazebo references --><gazebo reference="base_link"> <mu1 value="0.0"/> <mu2 value="0.0"/> <kp value="10000000.0" /> <kd value="1.0" /> <material>Gazebo/Red</material></gazebo><gazebo reference="left_rear_wheel"> <mu1 value="2.0"/> <mu2 value="2.0"/> <kp value="10000000.0" /> <kd value="1.0" /> <fdir1 value="1 0 0"/> <material>Gazebo/Black</material></gazebo><gazebo reference="right_rear_wheel"> <mu1 value="2.0"/> <mu2 value="2.0"/> <kp value="10000000.0" /> <kd value="1.0" /> <fdir1 value="1 0 0"/> <material>Gazebo/Black</material></gazebo><gazebo reference="left_front_wheel"> <mu1 value="2.0"/> <mu2 value="2.0"/> <kp value="10000000.0" /> <kd value="1.0" /> <fdir1 value="0 0 1"/> <material>Gazebo/Black</material></gazebo><gazebo reference="right_front_wheel"> <mu1 value="2.0"/> <mu2 value="2.0"/> <kp value="10000000.0" /> <kd value="1.0" /> <fdir1 value="0 0 1"/> <material>Gazebo/Black</material></gazebo><gazebo reference="lidar"> <material>Gazebo/Black</material></gazebo><gazebo reference="camera"> <material>Gazebo/Black</material></gazebo><gazebo reference="real_sense"> <material>Gazebo/Grey</material></gazebo>
配置ros_control:
由于gazebo并沒阿克曼車型的插件,要鏈接gazebo與ros,我們先添加ros_control插件,它讀取所有transmission標(biāo)記,以及joint_state_publisher插件。
<!-- Gazebo Plugins --><gazebo> <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so"> <robotNamespace>/racebot</robotNamespace> <robotParam>robot_description</robotParam> <robotSimType>gazebo_ros_control/DefaultRobotHWSim</robotSimType> <legacyModeNS>true</legacyModeNS> </plugin></gazebo>
注意命名空間要設(shè)置為/racebot。
配置激光雷達(dá)插件:
<!-- hokuyo --> <gazebo reference="lidar"> <material>Gazebo/Grey</material> <sensor type="ray" name="hokuyo_sensor"> <pose>0 0 0.0124 0 0 0</pose> <visualize>false</visualize> <update_rate>40</update_rate> <ray> <scan> <horizontal> <samples>1081</samples> <resolution>1</resolution> <min_angle>-2.3561944902</min_angle> <max_angle>2.3561944902</max_angle> </horizontal> </scan> <range> <min>0.1</min> <max>10.0</max> <resolution>0.01</resolution> </range> <noise> <mean>0.0</mean> <stddev>0.01</stddev> </noise> </ray> <plugin name="gazebo_ros_hokuyo_controller" filename="libgazebo_ros_laser.so"> <topicName>/scan</topicName> <frameName>lidar</frameName> </plugin> </sensor> </gazebo>
配置深度相機(jī)插件:
由于配置realsense插件過于復(fù)雜,因此這里用kinect插件來代替realsense插件。
<gazebo reference="real_sense"> <sensor type="depth" name="real_sense"> <always_on>true</always_on> <update_rate>20.0</update_rate> <camera> <horizontal_fov>${60.0*3.14/180.0}</horizontal_fov> <image> <format>R8G8B8</format> <width="360px",height="auto" />
配置單目相機(jī)插件:
<!-- camera --><gazebo reference="camera"> <material>Gazebo/Grey</material> <sensor type="camera" name="camera"> <update_rate>30.0</update_rate> <camera name="camera"> <horizontal_fov>1.3962634</horizontal_fov> <image> <width="360px",height="auto" />
配置imu插件:
<gazebo reference="imu"> <material>Gazebo/Orange</material> <gravity>true</gravity> <sensor name="imu_sensor" type="imu"> <always_on>true</always_on> <update_rate>100</update_rate> <visualize>true</visualize> <topic>__default_topic__</topic> <plugin filename="libgazebo_ros_imu_sensor.so" name="imu_plugin"> <topicName>imu</topicName> <bodyName>imu</bodyName> <updateRateHZ>100.0</updateRateHZ> <gaussianNoise>0.0</gaussianNoise> <xyzOffset>0 0 0</xyzOffset> <rpyOffset>0 0 0</rpyOffset> <frameName>imu_link</frameName> </plugin> <pose>0 0 0 0 0 0</pose> </sensor></gazebo>
5?在gazebo中顯示并演示傳感器效果
創(chuàng)建racebot_gazebo功能包,并創(chuàng)建如下文件夾:
在launch文件夾中創(chuàng)建racebot.launch文件:
<?xml version="1.0"?><launch> <!-- 設(shè)置launch文件的參數(shù) --> <arg name="paused" default="false"/> <arg name="use_sim_time" default="true"/> <arg name="gui" default="true"/> <arg name="headless" default="false"/> <arg name="debug" default="false"/> <!--模型車的起點放置位置--> <arg name="x_pos" default="0"/> <arg name="y_pos" default="0"/> <arg name="z_pos" default="0"/> <arg name="R_pos" default="0"/> <arg name="P_pos" default="0"/> <arg name="Y_pos" default="0"/> <!--運行g(shù)azebo仿真環(huán)境--> <include file="$(find gazebo_ros)/launch/empty_world.launch"> <arg name="debug" value="$(arg debug)" /> <arg name="gui" value="$(arg gui)" /> <arg name="paused" value="$(arg paused)"/> <arg name="use_sim_time" value="$(arg use_sim_time)"/> <arg name="headless" value="$(arg headless)"/> <arg name="world_name" value="$(find racebot_gazebo)/worlds/room_mini.world"/> <!-- .world文件的地址--> </include> <!-- 加載機(jī)器人模型描述參數(shù) --> <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find racebot_description)/urdf/ackermann/racecar.xacro'"/> <!-- 在gazebo中加載機(jī)器人模型--> <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen" args="-urdf -model racebot -param robot_description -x $(arg x_pos) -y $(arg y_pos) -z $(arg z_pos) -R $(arg R_pos) -P $(arg P_pos) -Y $(arg Y_pos)"/> <!-- <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen" args="-urdf -model tianracer -param robot_description -x $(arg x_pos) -y $(arg y_pos) -z $(arg z_pos)"/> --> <!-- ros_control racecar launch file --> <!--Launch the simulation joystick control--><!-- <node pkg="tf2_ros" type="static_transform_publisher" name="static_transform_publisher" args="0 0 0 -1.57 0 -1.57 /real_sense /real_sense_depth" /> --></launch>
在worlds文件夾中,將之前用于mini小車仿真的room_mini.world文件放入,使得racebot載入有room_mini地圖的gazebo仿真環(huán)境中。
roslaunch racebot_gazebo racebot.launch
可以看到小車已經(jīng)加載到gazebo環(huán)境中,然而此時無法控制小車運動,因為還未配置controllers,但是我們可以讀取到傳感器參數(shù)。
讀取imu參數(shù):
rostopic echo /imu
讀取雷達(dá)數(shù)據(jù):
打開rviz
rviz
將fixed_frame改為base_footprint, 點擊add-->by topic-->laserScan,此時在rviz中即可顯示雷達(dá)點云
單目攝像頭:
在rviz中add-->by topic-->/rrbot/camera1/image_raw/camera即可添加相機(jī)插件,并顯示圖像:
深度攝像頭:
深度攝像頭查看深度圖像與單目攝像頭同理add-->by topic-->realsense/depth/image_raw/camera
只是在添加pointcloud2時會出現(xiàn)問題,add-->by topic-->realsense/depth/points/pointcloud2,會發(fā)現(xiàn)彩色點云出現(xiàn)在小車正上方,原因是在kinect中圖像數(shù)據(jù)與點云數(shù)據(jù)使用了兩套坐標(biāo)系統(tǒng),且兩套坐標(biāo)系統(tǒng)位姿并不一致。
解決方法有兩種:
1.可以在launch文件中加入坐標(biāo)變換,即可解決這一現(xiàn)象。
<node pkg="tf2_ros" type="static_transform_publisher" name="static_transform_publisher" args="0 0 0 -1.57 0 -1.57 /support /support_depth" />
詳細(xì)參考奧特學(xué)園《kinect信息仿真以及顯示》https://sourl.cn/ziwDEU
2.第二種方法是在urdf中加入新的link,即使用點云數(shù)據(jù)的link,并通過joint做坐標(biāo)變換來解決。
<link name="realsense_depth"/> <joint name="realsense_depth_joint" type="fixed"> <origin xyz="0 0 0" rpy="-1.5708 0 -1.5708"/> <parent link="real_sense"/> <child link="realsense_depth"/> </joint>
修改插件
<gazebo reference="real_sense"> <sensor type="depth" name="real_sense"> <always_on>true</always_on> <update_rate>20.0</update_rate> <camera> <horizontal_fov>${60.0*3.14/180.0}</horizontal_fov> <image> <format>R8G8B8</format> <width="360px",height="auto" />
6?小結(jié)
本節(jié)內(nèi)容關(guān)于小車傳動的添加,以及配置了小車上面的一些插件,下一節(jié)內(nèi)容,通過配置controller讓小車動起來。
參考資料:
1.古月老師的《ROS機(jī)器人開發(fā)實踐》
2.奧特學(xué)園《6.7.4 kinect信息仿真以及顯示》https://sourl.cn/ziwDEU
3.gazebo官網(wǎng) http://gazebosim.org/tutorials/?tut=ros_urdf
pos機(jī)的操作步驟
步驟如下:
1、確認(rèn)pos機(jī)有電,長按開關(guān)鍵打開pos機(jī),如下圖所示:
2、輸入操作員號碼01按確認(rèn),再輸入操作員密碼0000再按確認(rèn),依次操作如下圖所滑埋示:
3、pos機(jī)就自動打開了。然空讓運后就可以刷卡,輸入金額,讓持卡人輸入密碼。出完兩張小票之后第一張給持卡人簽名,另一張自己收好,方便對賬。
擴(kuò)展資料
POS機(jī)是通過讀卡器讀取銀行卡上的持卡人磁條信息,由POS操作人員輸入交斗梁易金額,持卡人輸入個人識別信息(即密碼),POS把這些信息通過銀聯(lián)中心,上送發(fā)卡銀行系統(tǒng),完成聯(lián)機(jī)交易,給出成功與否的信息,并打印相應(yīng)的票據(jù)。
POS的應(yīng)用實現(xiàn)了信用卡、借記卡等銀行卡的聯(lián)機(jī)消費,保證了交易的安全、快捷和準(zhǔn)確,避免了手工查詢黑名單和壓單等繁雜勞動,提高了工作效率。
收銀結(jié)賬的的步驟和要領(lǐng)?
1、拿到一個pos機(jī)呢首先要開機(jī),按紅色取消鍵聽到第一聲響的時候松開手指等待聯(lián)機(jī),聯(lián)機(jī)成功之后會提示您按任意鍵簽到,接著會提示您輸入操作員號碼,按確認(rèn)鍵之后會提示您輸入操作員密碼,輸入成功后就會進(jìn)入操作主界面,上面有消費、撤銷、退貨、預(yù)授權(quán)等提示。
2、由于它的待機(jī)時間是有限的,當(dāng)出現(xiàn)銀聯(lián)這個界面的時候按功能鍵就會返回剛才的界面,然后輸入消費前面的數(shù)字1進(jìn)入,接著會有兩個選項供您選擇,1、借記卡消費2、信用卡消費,下面我用農(nóng)行的借記卡個大家操作,按它對應(yīng)的數(shù)字1進(jìn)入借記卡消費界面,提示您請刷卡,按照操作銀行卡磁條向下面對自己,將銀行卡從左到右輕輕勻速劃過,然后按確認(rèn)鍵輸入金額,輸入之后按確認(rèn)會提示您輸入聯(lián)機(jī)密碼,聯(lián)機(jī)密碼也就是您的銀行卡密碼,在輸入密碼之前和消費者之間雙方確認(rèn)金額,輸入密碼,確認(rèn)成功之后就會自動打印憑條,然后捏住憑條上方面向自己稍微傾斜撕下,然后在憑條下方持卡人簽名處簽上客戶姓名上交財務(wù)處,接著上面會有提示:按任意鍵繼續(xù),那么點擊任意一個數(shù)字再次打印,這張憑條交由客戶自己保存?! ?/p>
3、如發(fā)現(xiàn)金額輸入錯誤,按功能鍵出現(xiàn)主界面,按數(shù)字2選擇撤銷,確認(rèn)后會提示您輸入主管密碼,輸入成功之后提示您輸入原憑證號碼,憑證號在憑條中間位置,輸入憑證號,按確認(rèn)會出現(xiàn)原銀行卡交易信息,再次按確認(rèn)鍵,這兒輸入卡號和刷卡都可以,刷卡方式跟上面是一樣的,之后按確認(rèn)鍵會提示您輸入銀行卡密碼,輸入之后按確認(rèn),會自動打印憑條,接下來的操作跟上面消費操作步驟一樣。這兒要提醒大家,撤銷操作只在消費當(dāng)天有效,其他的一些操作由于用的不是很多這兒就不給大家多做演示,根據(jù)上面的提示操作就可以了。
以上就是關(guān)于pos機(jī)演示教程, 阿克曼結(jié)構(gòu)移動機(jī)器人的gazebo仿真的知識,后面我們會繼續(xù)為大家整理關(guān)于pos機(jī)演示教程的知識,希望能夠幫助到大家!
