本文链接:https://blog.csdn.net/AgileX/article/details/106730024
如何通过开源SDK控制松灵机器人SCOUT底盘?
松灵课堂开课啦!为了更方便的解答大家在使用我们移动底盘进行开发调试的时候出现的问题,使二次研发更加得心应手,我们开设了松灵课堂,主要为小伙伴们讲解松灵机器人开发过程中一些需要注意的问题,同时也会将具有代表性的用户问题(隐去商业秘密后)详解发布出来,欢迎各位小伙伴随时与我们交流。
松灵课堂系列 SCOUT 专题分为三篇文章,第一个专题我们采用松灵最具代表性的SCOUT 2.0机器人移动平台,作为本系列的第一篇文章,我们先简单的教大家如何通过开源SDK控制SCOUT?接下来的两篇文章分别给大家讲解ros_package 解析和scout_ros代码分析教学。
https://www.bilibili.com/video/BV1fA411q76x?t=206.8
松灵机器人SCOUT2.0开源SDK控制教程
前期准备
准备
■ 硬件准备
● CANlight can通讯模块 X1
● Thinkpad E490 笔记本电脑 X1
● AGILEX SCOUT 2.0 移动机器人底盘 X1
● AGILEX SCOUT 2.0 配套遥控器FS-i6s X1
● AGILEX SCOUT 2.0 顶部航空插座 X1
■使用示例环境说明
● Ubuntu 16.04 LTS(此为测试版本,在Ubuntu 18.04 LTS测试过)
● Git
该软件包提供了一个 C++ 的接口,可与松灵机器人的移动平台进行通讯,用以将命令发送给机器人并获得机器人的最新状态。该SDK可在x86和ARM平台上使用。
通常情况下,你只需要定义一个机器人的基类(例如ScoutBase),然后使用该对象编辑控制机器人。
从内部讲,基类管理两个后台线程,一个用于处理机器人的CAN/UART信息状态,并相应的在机器人状态数据结构中更新状态,另一个维护一个20Hz循环并给机器人发送最新指令。用户可以在主线程中迭代执行任务,并检查机器人状态或设置控制指令。
相关示例,请参考“src/apps”。
硬件接口
设置CAN转USB适配器
1、启用gs_usb内核模块(本指令需要搭配相应的硬件设备才可以使用,需要Linux内部版本>4.5)
$ sudo modprobe gs_usb
2、设置can设备参数
$ sudo ip link set can0 up type can bitrate 500000
3、如果在前面的步骤中没有发生错误,您可以使用以下指令查看can设备
$ ifconfig -a
4、按装和使用can-utils来测试硬件
$ sudo apt install can-utils
5、测试指令
# receiving data from can0
$ candump can0
# send data to can0
$ cansend can0 001#1122334455667788
提供了 "./scripts"文件夹里的两个脚本以便于设置。您可以在首次安装时运行“ ./setup_can2usb.bash”,并在每次拔出和重新插入适配器时运行“ ./bringup_can2usb.bash”以启动设备。
设置UART
通常您的UART2USB电缆应自动识别为“ / dev / ttyUSB0”或类似名称即可使用。如果在尝试打开端口是收到错误"… permission denied …" ,则需要授予用户账号访问权限:
$ sudo usermod -a -G dialout $USER
您需要重新登录才能使更改生效。
构建SDK
安装编译工具
$ sudo apt install build-essential cmake
在这里插入图片描述
如果您想要构建TUI监控工具,需安装libncurses
$ sudo apt install libncurses5-dev
2、配置和构建
$ cd scout_sdk
$ mkdir build
$ cd build
$ cmake ..
$ make
运行演示应用
演示代码需要一个用于CAN总线模式的参数
$ ./app_scout_demo can0
使用RS232接口时,必须提供端口名称和波特率
$./app_scout_demo /dev/ttyUSB0 115200
如果您已安装“ libncurses5-dev”并构建了“ app_scout_monitor”,则可以通过相似的方式来运行:
$ ./app_scout_monitor can0
或者
$./app_scout_monitor /dev/ttyUSB0 115200
通过开源SDK,客户可以快速通过指令的形式与小车底盘进行控制,省去客户自主适配协议的过程,做到拿来即用的状态,省去客户开发的过程,缩短开发时间。本节内容基本结束,下一节我们主要讲解ros_package 解析。
代表性问题