完成了底盘ROSSerial的接入后, 能提供的能力
-
通讯硬件接口
-
ROSSerial
-
-
通讯软件接口
-
底盘端
-
发布服务 /srv_chassis_version
-
格式为 big_msgs::ChassisVersionInfo
-
-
发布话题 chassis_debug
-
格式为 std_msgs::String
-
-
发布话题 imu
-
格式为 sensor_msgs::Imu
-
-
发布话题 eular_pose
-
格式为 big_msgs::ChassisEularAngle
-
-
发布话题 sensor_state
-
格式为 big_msgs::ChassisSensorState
-
-
发布话题 odom
-
格式为 nav_msgs::Odometry
-
-
发布话题 joint_states
-
格式为 sensor_msgs::JointState
-
-
主控端
-
发布话题 cmd_vel
-
格式为 geometry_msgs::Twist
-
-
发布话题 reset
-
格式为 std_msgs::Empty
-
-
发布话题 time_sync
-
格式为 builtin_interfaces::Time
-
-
发布话题 heartbeat //频率发布, 如果底盘一段时间内无法收到握手, 则任务连接已经断开, 则停止电机运行.
-
格式为 std_msgs::Empty
-
-
发布话题 motor_power //是否刹车
-
格式为 std_msgs::Bool
仿照 teleop的代码使用把线速度和弧速度分开的方式, 能更好的控制底盘的行动能力.
目前在 joule上添加 激光雷达 rplidar A3M1的支持.
根据厂家的 支持
rplidar A3M1 一般用于室内机器人, 支持2D 360扫描, 频率 10Hz-20Hz, 高达16K/秒的采样率, 距离能达到 25米. 多种扫描模式可选(例如sensitiy模式). 顺时针角度, 有线的点为 180度. 其map的坐标系为 Y
正向=90度, X正向=180度.
rplidar_ros数据包提供了接口 数据输出.
rplidar_ros数据包提供的节点
rplidarNode : 获取 prlidar A3的原始数据并整理成 格式输出.
topic话题:
scan 提供 数据输出
services服务: 雷达电机部分的启停.
stop_motor()
start_motor()
parameters: 参数
serial_port (string, default: /dev/ttyUSB0) 雷达所在串口
serial_baudrate (int, default: 115200)
frame_id (string, default: laser)
inverted (bool, default: false) 激光雷达是否是反向安装的.
angle_compensate (bool, default: true) 是否需要角补偿
scan_mode (string, default: std::string()) 扫描模式设定
激光雷达要在主控机器上识别要做的操作
-
KERNEL=="ttyUSB*", MODE="0666"
-
执行数据包内的脚本
-
./scripts/create_udev_rules.sh
-
在启动ROS节点或者 launch文件时, 关于串口部分的参数,可以使用如下方式
-
-
<param name="serial_port" type="string" value="/dev/rplidar"/>
提供的范例
-
确认A3雷达存在
-
ls -l /dev |grep ttyUSB
-
给出访问权限
-
sudo chmod 666 /dev/ttyUSBx
-
加载节点并扫描结果可以在rviz中看到.
-
$ roslaunch rplidar_ros view_rplidar_a3.launch #for rplidar A3
-
-
如果看原生数据可以使用
-
roslaunch rplidar_ros_a3 rplidar.launch #for rplidar A3
-
此时可以看到 rostopic list 包括 /scan
-
rosservice list 看到 /start_motor /stop_motor
-
执行 rosservice call /start_motor 启动扫描.
-
rosrun rplidar_ros rplidarNodeClient
-
能看到众多数据.
-
[INFO] [时间点 double 秒] :: [角度, 距离 double 米]
阅读(7819) | 评论(0) | 转发(0) |