1 Star 0 Fork 7

harryzhang / ROS绝尘小车说明

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

ROS智能下位机开发说明

0x01 切换至上位机控制模式

此功能常用于上位机跑飞导致的车辆失控后的手动控制

拿起遥控器,按一下侧键,切换成上位机控制模式:
遥控侧键
切换成功后,车辆表现为扣油门不动,打转向不转。此时表示车辆受上位机控制,若想返回遥控控制,只需要再按一下,就可以使用遥控控制油门和方向了

0x02 测试自适应串口上位机

  • 首先,先把控制器上的typeC线插入一台安装有Windows系统的电脑。
  • 然后打开设备管理器->端口。 串口
  • 记录下该端口,打开tools/XCOM.exe
  • 打开该端口,波特率随意,然后配置成如图所示: 配置
  • 打开tools/发送帧计算器.xlsx,输入速度为30,方向为45 (请保证车辆处于上位机控制模式)xlsx
  • 切换回XCOM.exe,把十六进制这一行复制到发送区域中,数值与数值之间用空格连接,由于直接复制过来数值之间不是空格,需要手动用空格隔开。 xlsx
  • 点击发送,此时车轮应该旋转,方向并转一定角度。

0x03 编写ROS上位机控制程序

通过上面的操作,我们已经知道了小车是会如何与上位机通讯了,现在我们可以根据上面的提示和原理,进行ROS程序的编写

程序模板位于src下,还不完善,只是实现了收发,请老师们根据通讯协议,用实车调试、完善下代码

串口设备说明

在LINUX系统下,所有串口设备被统一表示为ttyUSB*,找到这个串口,然后放到launch文件下,就可以对串口进行打开读写操作。

编译程序模板

直接把程序放在catkin_ws/src下进行编译。

串口操作方式

请阅读程序模板,里面给出了读写串口的示例。

发送帧编码说明(这里用C代码实现,根据原理用python也可以实现)

发送

void encode(void)
{
    unsigned char sand_buff[14];
    unsigned long sum;
    float speed;
    float direction;

    sand_buff[0] = sand_buff[1] = 0xaa;//帧头
    sand_buff[13] = sand_buff[14] = 0xbb;//帧尾
    sand_buff[2] = ((unsigned short)speed & 0xff00)>> 8;   //取速度的高八位
    sand_buff[3] = (unsigned short)speed & 0x00ff ;   //取速度的低八位
    sand_buff[4] = (unsigned short)(speed * 100) & 0xff;    //取小数点后两位

    sum=0;
    for(i=2;i<=10;i++)
        sum+=pack_data[i];
        
    sand_buff[11] = (uint8_t)(sum & 0xff);  //取所有数值(除了帧头帧尾)加起来的低八位
}

接收解码说明

解码

static unsigned char rev_data[14];//接收数组
void decode(void)
{
    if(rev_data[0] == 0xaa && rev_data[1] == 0xaa && rev_data[12] == 0xbb && rev_data[13] == 0xbb)//检查帧头帧尾
    {
       for(i=2;i<=10;i++)
            sum += rev_data[i];
        if((sum&0xff) != rev_data[11]) return -1; //计算校验和

        float speed = (float)((int16_t)(rev_data[2]<<8 | rev_data[3])) + ((float)(int8_t)rev_data[4]/100);//接收到实时速度

        unsigned char sbus_ch1 = rev_data[7];   //遥控器通道1
        unsigned char sbus_ch1 = rev_data[8];   //遥控器通道2
        unsigned char sbus_ch1 = rev_data[9];   //遥控器通道3
        unsigned char sbus_ch1 = rev_data[10];   //遥控器通道4
    }
}

0x04 通过ROS控制小车

请先查看ROS小车 请将code文件夹里面的文件复制到catkin_ws本地文件夹中,直接编译即可。

cp -r code ~/catkin_ws
cd ~/catkin_ws
catkin build

然后launch启动传输节点(此处未测试可能有小bug

roslaunch driver.launch

通过上位机控制车速和转角

从这开始,节点会监听/cmd_vel的twist.x和twist.z信息,twist.x表示时速,twist.z表示转角。发布该消息即可实现上位机控制。

示例源码:example下,可以直接编译进行导航,但是目前下位机还未完善IMU等部分,需要等待完善。

0x05 使用遥控器和cartographer建图

传送链接

0x06 GPS和IMU和其他

目前还没有想好GPS和IMU使用什么通讯协议上传,所以不在上传列表里面,接下来可能会采用Mavlink协议进行通讯,这两个模块功能可以通过重新编译下位机程序查看和实现。

0x07 下位机源码

传送连接

MIT License Copyright (c) 2020 harryzhang Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

ROS绝尘智能下位机开发说明 展开 收起
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/harryzhangabc/ros-vehicle-tasks.git
git@gitee.com:harryzhangabc/ros-vehicle-tasks.git
harryzhangabc
ros-vehicle-tasks
ROS绝尘小车说明
master

搜索帮助