《鸿蒙机器人编程》5-实践课-创建仿真机器人与实体机器人同步-实训指南_第1页
《鸿蒙机器人编程》5-实践课-创建仿真机器人与实体机器人同步-实训指南_第2页
《鸿蒙机器人编程》5-实践课-创建仿真机器人与实体机器人同步-实训指南_第3页
《鸿蒙机器人编程》5-实践课-创建仿真机器人与实体机器人同步-实训指南_第4页
《鸿蒙机器人编程》5-实践课-创建仿真机器人与实体机器人同步-实训指南_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实践课-创建仿真机器人与实体机器人同步课程内容: 本节主要介绍Arbotix控制机器人模型运动的功能,以及操控实体机器人和仿真机器人的同步运动。教学目标:掌握Arbotix控制机器人模型运动掌握启动实体机器人运动的demo掌握操作实体机器人及仿真机器人进行同步运动一.控制仿真机器人运动1.准备工作先去github下载Spark的代码:$cd~$gitclone/NXROBO/spark_noetic.git在Spark的开发包里,已经包含了Spark的仿真启动环境,我们先从启动脚本入手来了解下Spark的仿真启动内容。launch文件路径: spark_noetic/src/spark/spark_description/launch/spark_description_rviz.launch2.加载模型下图是launch文件的具体内容。<!--sparkdescriptionwithrviz--><launch><argname="camera_type_tel"default="astrapro"doc="cameratypes[asatra,astrapro,d435...]"/><argname="lidar_type_tel"default="3iroboticslidar2"doc="lidartype[3iroboticslidar2,ydlidar_g2]"/><argname="model"default="$(findspark_description)/robots/spark.urdf.xacro"/><argname="use_gui"default="false"/><argname="publish_default_positions"default="true"/><paramname="robot_description"command="$(findxacro)/xacro--inorder'$(argmodel)'camera_type_tel:=$(argcamera_type_tel)lidar_type_tel:=$(arglidar_type_tel)"/><nodename="joint_state_publisher"pkg="joint_state_publisher"type="joint_state_publisher"> <paramname="use_gui"value="$(arguse_gui)"/> <paramname="publish_default_positions"value="$(argpublish_default_positions)"/> <rosparamparam="source_list">["wheel_states"]</rosparam></node><nodename="robot_state_publisher"pkg="robot_state_publisher"type="state_publisher"/><!--showrobowithrviz--><argname="rvizconfig"default="$(findspark_description)/rviz/urdf.rviz"/><nodename="rviz"pkg="rviz"type="rviz"args="-d$(argrvizconfig)"required="true"/></launch>可以看出,这里定义了一个model变量,实际上他是指定一个机器人的urdf的描述文件。脚本启动了三个节点,joint_state_publisher、robot_state_publisher和rviz。而joint_state_publisher和robot_state_publisher两个节点均属于ros_control包中的工具。启动仿真机器人,运行下面命令:$roslaunchspark_descriptionspark_description_rviz.launch3.控制模型运动在launch文档中,我们只是加载了ros_control的相关节点以及rviz仿真器,它仅仅只是将我们的spark显示出来。为了让我们的仿真spark动起来,我们还需要一个底盘的模拟节点,在此我们使用arbotix这个包来完成此功能。$sudoaptinstallros-noetic-arbotix之后创建src/spark/spark_description/config/fake_spark_arbotix.yaml配置文件,用以仿真spark底盘参数:mkdir–pspark_noetic/src/spark/spark_description/configcdspark_noetic/src/spark/spark_description/config/touchfake_spark_arbotix.yamlgeditfake_spark_arbotix.yaml4.修改配置文件fake_spark_arbotix.yaml文件内容如下:port:/dev/ttyUSB0baud:115200rate:20sync_write:Truesync_read:Trueread_rate:20write_rate:20controllers:{#Pololumotors:1856cpr=0.3888105mtravel=4773tickspermeter(empirical:4100)base_controller:{type:diff_controller,base_frame_id:base_footprint,base_width:0.26,ticks_meter:4100,Kp:12,Kd:12,Ki:0,Ko:50,accel_limit:1.0}}5.启动新建launch文件命名为spark_description_arbotix.launch,具体代码如下:<!--sparkdescriptionwithrviz--><launch><argname="camera_type_tel"default="astrapro"doc="cameratypes[asatra,astrapro,d435...]"/><argname="lidar_type_tel"default="3iroboticslidar2"doc="lidartype[3iroboticslidar2,ydlidar_g2]"/><argname="model"default="$(findspark_description)/robots/spark.urdf.xacro"/><argname="use_gui"default="false"/><argname="publish_default_positions"default="true"/><paramname="robot_description"command="$(findxacro)/xacro--inorder'$(argmodel)'camera_type_tel:=$(argcamera_type_tel)lidar_type_tel:=$(arglidar_type_tel)"/><nodename="joint_state_publisher"pkg="joint_state_publisher"type="joint_state_publisher"> <paramname="use_gui"value="$(arguse_gui)"/> <paramname="publish_default_positions"value="$(argpublish_default_positions)"/> <rosparamparam="source_list">["wheel_states"]</rosparam></node><nodename="robot_state_publisher"pkg="robot_state_publisher"type="robot_state_publisher"/><nodename="arbotix"pkg="arbotix_python"type="arbotix_driver"output="screen"clear_params="true"><rosparamfile="$(findspark_description)/config/fake_spark_arbotix.yaml"command="load"/><paramname="sim"value="true"/></node><!--showrobowithrviz--><argname="rvizconfig"default="$(findspark_description)/rviz/urdf.rviz"/><nodename="rviz"pkg="rviz"type="rviz"args="-d$(argrvizconfig)"required="true"/></launch>启动此launch档,记得先载入spark环境:$cdspark_noetic$sourcedevel/setup.bash$roslaunchspark_descriptionspark_description_arbotix.launch6.开始控制我们打开一个新的terminal,手动发送/cmd_vel这个topic,就会看到spark模型动起来啦。$rostopicpub-r10/cmd_velgeometry_msgs/Twist'{linear:{x:0.5,y:0,z:0},angular:{x:0,y:0,z:0.5}}'7.键盘控制开启一个新终端并加载环境变量,并运行:$source~/spark_noetic/devel/setup.bash$rosrunspark_teleopspark_teleop_node这样我们就可以实现键盘控制,如下图所示。二.控制实体机器人运动在Spark的开发包中已经提供了底盘的驱动,我们只需要启动它,向它发送速度就可以了,开发包中还贴心的提供了键盘控制程序。Spark的驱动包路径:src/spark_driver/base/spark_base。发送命令:$source~/spark_noetic/devel/setup.bash$roslaunchspark_basespark_base.launch启动一个新的terminal窗口:$rostopicpub-r10/cmd_velgeometry_msgs/Twist'{linear:{x:0.5,y:0,z:0},angular:{x:0,y:0,z:0.5}}'串口设置正确的话,就能看到spark开始转圈圈啦。也可以在新终端窗口输入:$source~/spark/devel/setup.bash$rosrunspark_teleopspark_teleop_node这样就可以实现,通过键盘WASD控制SPARK移动。三.控制实体Spark与仿真Spark同步运动启动实体Spark:$source~/spark/devel/setup.bash$roslaunchspark_basespark_base.launch启动仿真Spark:$cdspark$sourcedevel/setup.bash$roslaunchspark_descriptionspark_description_rviz.launch新终端窗口输入如下指令转圈:$rostopicpub-r10/cmd_velgeometry_msgs/Twist'{line

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论