《鸿蒙机器人编程》课件-14-ROS外接设备_第1页
《鸿蒙机器人编程》课件-14-ROS外接设备_第2页
《鸿蒙机器人编程》课件-14-ROS外接设备_第3页
《鸿蒙机器人编程》课件-14-ROS外接设备_第4页
《鸿蒙机器人编程》课件-14-ROS外接设备_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

ROS外接设备介绍课程内容课程目的:了解ROS外接设备,并知道如何使用课程安排:介绍ROS下常用的外接设备摇杆、键盘和鼠标RGB-D摄像头激光雷达视觉传感器惯性测量模块与GPS伺服电机底层嵌入式控制器Arduino©NXROBO20222输入设备感知设备驱动设备摇杆、键盘和鼠标摇杆、键盘和鼠标是最常见的计算机外部设备,相信大家都非常熟悉在这一节首先介绍一下如何在ROS中使用这类设备并结合小海龟等实例进行操作学习。网址:

/ros-teleop©NXROBO20223摇杆摇杆就是有一组按钮和电位器的装置,能够实现或控制多种运动模式。在ROS系统中,使用摇杆能够实现机器人的远程控制。ROS支持大部分通用性摇杆作为输入设备。安装一些功能包并配置:©NXROBO20224$sudoaptinstallros-noetic-joystick-drivers$rosstackprofile&rospackprofile摇杆测试插入并检测摇杆能否被识别:使用jstest命令检测摇杆工作情况(视情况js0、js1等):这里,摇动摇杆或点击按钮就会有相应的输出,如右图所示。如果一切正常就可以在ROS系统中使用它。©NXROBO20225$ls/dev/input/$sudojstest/dev/input/js1摇杆使用首先,启动joy_node:查看节点发布的消息:这里,有轴向信息,也有按钮信息。©NXROBO20226$rosrunjoyjoy_node$rostopicecho/joy摇杆使用查看消息类型:查看消息中使用的字段:©NXROBO20227$rostopictype/joy$rosmsgshowsensor_msgs/Joy摇杆示例运行以下命令就可以实现用摇杆控制,小海龟运动。也可以通过类似的步骤控制Gazebo中的一些模拟机器人以及真实机器人运动。需要修改发布关联话题的名称,将被控对象订阅的话题改为/cmd_vel©NXROBO20228$rosrunteleop_twist_joyteleop_node键盘和鼠标如果没有摇杆,使用键盘或鼠标也能进行机器人的简单遥控。这里简单介绍一下使用teleop_twist_keyboard和mouse_teleop遥控功能包。也需要修改发布关联主题的名称等,和上面示例类似,*_keyboard.py(/cmd_vel)、mouse_teleop.py(/mouse_vel)。使用的命令如下:©NXROBO20229$rosrunturtlesimturtlesim_node$rosrunteleop_twist_keyboardteleop_twist_keyboard.py$rosrunmouse_teleopmouse_teleop.py键盘和鼠标ROS的输入设备除了典型的三种之外,还可以用手机等与机器人进行交互,大家有空可以进一步探索,发现最适合的方式去控制机器人。©NXROBO202210激光雷达对周围环境感知是机器人的一项重要能力激光雷达(lidar)是环境感知的一种重要传感器,能测量出障碍物的距离信息这些信息非常重要,可用来构建地图、避障、导航本节以杉川激光雷达为例。©NXROBO202211激光雷达配置首先,需要下载spark代码并安装依赖(带小主机的spark版本已集成,可忽略此步骤):一旦驱动安装完毕,就可以检测安装是否正确,系统能否检测并使用它。这里,需要注意,如果没有安装相关依赖,启动激光节点有可能遇到问题,例如串口权限等。©NXROBO202212$gitclonehttps:///NXROBO/spark_noetic.git$ll/dev/|grep3ilidar启动激光雷达一切正常工作后,就可以使用激光雷达获取信息了,使用下面命令启动节点:©NXROBO202213$roslaunchiiiroboticslidar23iroboticslidar2.launch激光雷达使用使用rostopic查看主题是否发布数据:其中/scan,是正在发布消息的主题,查看节点类型:使用以下命令查看数据结构:©NXROBO202214$rostopiclist$rostopictype/scan$rosmsgshowsensor_msgs/LaserScan激光雷达使用如果想查看激光雷达发布的消息,可以使用如下命令:此时单纯显示数字不形象,难以理解,可以使用rviz在图形化接口下显示数据:©NXROBO202215$rostopicecho/scan$rviz视觉传感器在ROS系统中,视觉传感器主要包括与RGBD深度传感器这两类设备。©NXROBO202216RGB摄像头RGBD摄像头USB摄像头USB摄像头最为普遍,如笔记内置摄像头等,在ROS使用这类设备非常轻松。首先,安装相应功能包:这里,在使用前需要注意,摄像头的pixel_format,有些设备是yuyv格式的,需要修改,否则会出错并无法看到图像。也可以使用以下命令测试USB摄像头是否在ROS中正常工作:©NXROBO202217$sudoaptinstallros-noetic-usb-cam$rosrunusb_camusb_cam_node$roslaunchusb_camusb_cam-test.launchUSB摄像头©NXROBO202218USB摄像头使用rostopiclist查看主题列表:也可以使用rqt_image_view或在rviz中查看:©NXROBO202219$rosrunrqt_image_viewrqt_image_view3D深度摄像头以奥比中光3D深度摄像头为例,它包括一个彩色的VGA视频摄像头、深度传感器以及麦克风数组。我们的spark已安装该款摄像头的驱动及依赖,安装完成后,仅需插好该摄像头USB界面,运行节点并使用它:©NXROBO202220$roslaunchastra_launchastra.launch可以用rostopiclist查看主题列表,找到摄像头相关的话题:类似/camera/rgb/image_raw,/camera/depth/image可以用rostopicecho命令、image_view、rviz等工具查看摄像头获取到的数据还可用rqt_image_view功能包查看视频图像(左图为深度,右图为RGB):©NXROBO202221$rosrunrqt_image_viewrqt_image_view3D深度摄像头3D深度摄像头还可产生点云数据如果你需要查看点云数据,可以在rviz中,点击Add按钮,添加PointCloud2©NXROBO2022223D深度摄像头惯性测量模块(IMU)与GPS惯性测量模块是测量物体速度姿态等信息的电子设备,主要由三轴陀螺和三轴加速度计,甚至还包括磁力计等组成。全球定位系统GPS可以获取地球上几乎所有地区的位置和时间信息。©NXROBO202223IMUGPS惯性测量模块(以xsens为例)想要使用,首先驱动安装:启动设备:然后就可以查看传感器数据了,使用以下命令:当然,也可以在rviz中显示可视化的姿态数据。©NXROBO202224$sudoapt-getinstallros-noetic-xsens-driver$rosstackprofile&&rospackprofile$roslaunchxsens_driverxsens_driver.launch$rostopicecho/imu/dataGPS在ROS中使用GPS,需要安装NMEAGPS驱动:启动节点,_port是端口号,_baud是串口传输速率:使用rostopiclist可以看到/fix的主题。©NXROBO202225$sudoaptinstallros-noetic-nmea-*$rosstackprofile&&rospackprofile$rosrunnmea_navsat_drivernmea_serial_driver_port:=/dev/rfcomm0_baud:=115200GPS查看主题消息内容可以使用rostopicecho/fix:©NXROBO202226$rostopicecho/fixGPS也可以使用以下命令查看原始NMEA数据:©NXROBO202227$rosrunnmea_navsat_drivernmea_topic_serial_reader_port:=/dev/rfcomm0_baud:=115200$rostopicecho/nmea_sentence伺服电机在机器人中舵机使用非常广泛,可以直接搭建关节机器人,这里简单介绍一下Dynamixel伺服电机的使用。首先,是驱动安装:安装完成后,将设备接到计算机,并运行以下命令:©NXROBO202228$sudoaptinstallros-noetic-dynamixel-*$rosstackprofile&&rospackprofile$roslaunchdynamixel_tutorialscontroller_manager.launch伺服电机接着运行:使用/tilt_controller/command通过rostopicpub发布消息驱动电机:注意,这里0.5是弧度,约为28.65度。©NXROBO202229$roslaunchdynamixel_tutorialscontroller_spawner.launch$rostopicpub/tilt_controller/commandstd_msgs/Float64--0.5底层嵌入式控制器使用底层嵌入式控制器,可以极大扩展ROS外接的传感器和执行器的种类和数量,如Arduino、STM32等。ROS主要通过rosserial功能包使用这类设备。通常用串口建立底层嵌入式设备和计算器的数据交互,rosserial支持很多使用串口连接的设备,这里我们以Arduino为例。©NXROBO202230Arduino配置首先,输入以下命令,安装功能包:如果你已经安装了ArduinoIDE,忽略这一步,否则运行以下命令:这些都安装完毕后,需要运行以下命令:©NXROBO202231$sudoaptinstallros-noetic-rosserial-arduino$sudoaptinstallros-noetic-rosserial$sudoaptupdate&&sudoaptinstallarduinoarduino-core$cd~/sketchbook/libraries$rm-rfros_lib$rosrunrosserial_arduinomake_libraries.py.Arduino示例使用在ros_lib中提供了丰富的示例代码,例如选择helloworld,并下载,这些示例代码都在include中包含了ros.h头文件。代码主要包括两个函数:setup()和loop(),分别用于初始化和连续运行。在此,发送消息主题名称为chatter。©NXROBO202232Arduino示例使用在启动roscore后,在新终端运行下输入命令:现在就可以通过rostopicecho查看Arduino发布的消息。如果用计算机控制PIN13的LED灯状态,可以选择Blink示例,在File|Examples|ros_lib|Blink。通过以下命令可以改变灯的状态:©NXROBO202233$rosrunrosserial_pythonserial_node.py/dev/

温馨提示

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

评论

0/150

提交评论