chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

機(jī)器人里程計數(shù)據(jù)的上傳與接收

麥辣雞腿堡 ? 來源:CSDN博客 ? 作者:白鳥無言 ? 2023-11-16 16:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.通信協(xié)議

里程計數(shù)據(jù)格式(19字節(jié))

圖片

2.STM32

/**
 * @brief 發(fā)送里程計數(shù)據(jù)
 */
void DataTrans_Odom(void)
{
  uint8_t _cnt = 0;
  data_u _temp; // 聲明一個聯(lián)合體實例,使用它將待發(fā)送數(shù)據(jù)轉(zhuǎn)換為字節(jié)數(shù)組
  uint8_t data_to_send[100] = {0}; // 待發(fā)送的字節(jié)數(shù)組
  
  data_to_send[_cnt++]=0xAA;
  data_to_send[_cnt++]=0x55;
  
  uint8_t _start = _cnt;
  
  float datas[] = {kinematics.odom.vel.linear_x, 
                     kinematics.odom.vel.linear_y, 
                     kinematics.odom.vel.angular_z, 
                     kinematics.odom.pose.theta
                    };
  
  for(int i = 0; i < sizeof(datas) / sizeof(float); i++)
  {
    // 將要發(fā)送的數(shù)據(jù)賦值給聯(lián)合體的float成員
    // 相應(yīng)的就能更改字節(jié)數(shù)組成員的值
    _temp.data = datas[i];
    data_to_send[_cnt++]=_temp.data8[0];
    data_to_send[_cnt++]=_temp.data8[1];
    data_to_send[_cnt++]=_temp.data8[2];
    data_to_send[_cnt++]=_temp.data8[3]; // 最高位
  }
  
  uint8_t checkout = 0;
  for(int i = _start; i < _cnt; i++)
  {
    checkout += data_to_send[i];
  }
  data_to_send[_cnt++] = checkout;
  // 串口發(fā)送
  SendData(data_to_send, _cnt); 
}

3.ROS

采用狀態(tài)機(jī)的方式來接收STM32端上傳的里程計數(shù)據(jù),每讀取一字節(jié)數(shù)據(jù),則在狀態(tài)機(jī)中處理一次,部分程序如下:

uint8_t buffer = 0;
ser.read(&buffer, 1); // ser是串口類的一個實例,該語句表示從串口中讀取一個字節(jié)
if(state == 0 && buffer == 0xAA)
{
    state++;
}
else if(state == 1 && buffer == 0x55)
{
    state++;
}
else if(state == 2)
{
    data_receive[data_cnt++]=buffer;
    if(data_cnt == 17)
    {
        /* 進(jìn)行數(shù)據(jù)校驗 */
        uint8_t checkout = 0;
        for(int k = 0; k < data_cnt - 1; k++)
        {
            checkout += data_receive[k];
        }
        if(checkout == data_receive[data_cnt - 1]) // 串口接收到的最后一個字節(jié)是校驗碼 
        {
            /* 校驗通過,進(jìn)行解碼 */
            float vx, vy, vth, th; // x軸線速度,y軸線速度,z軸角速度,偏航角
            float* datas_ptr[] = {&vx, &vy, &vth, &th};
            data_u temp;
            for(int i = 0; i < sizeof(datas_ptr) / sizeof(float*); i++)
            {
                temp.data8[0] = data_receive[4 * i + 0];
                temp.data8[1] = data_receive[4 * i + 1];
                temp.data8[2] = data_receive[4 * i + 2];
                temp.data8[3] = data_receive[4 * i + 3];              
                *(datas_ptr[i]) = temp.data;
            }
            th *= D2R; // 轉(zhuǎn)換為弧度
        }
        data_cnt = 0;
        state = 0;
    }
}
else state = 0;

ROS端在運(yùn)行時可能會提示串口打開失敗,有兩種原因,一是串口號不對,使用dmesg | grep ttyS*列出檢測到的串口號,逐個測試;

二是沒有操作權(quán)限,使用sudo chmod 666 /dev/ttyACM0即可解決,也可以使用sudo usermod -aG dialout 用戶名來獲得永久權(quán)限,用戶名可使用whoami查看。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 機(jī)器人
    +關(guān)注

    關(guān)注

    213

    文章

    30627

    瀏覽量

    219708
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7315

    瀏覽量

    94003
  • STM32
    +關(guān)注

    關(guān)注

    2305

    文章

    11124

    瀏覽量

    371248
  • ROS
    ROS
    +關(guān)注

    關(guān)注

    1

    文章

    291

    瀏覽量

    18491
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    出租車行駛里程計數(shù)

    proteus仿真單片機(jī)實驗實訓(xùn)仿真文件 出租車行駛里程計數(shù)
    發(fā)表于 10-22 10:59

    深度解析|機(jī)器人自主移動的秘密(二)

    消耗是巨大的,雖然并沒有達(dá)到像訓(xùn)練神經(jīng)網(wǎng)絡(luò)動用服務(wù)器集群那種地步,但傳統(tǒng)上需要PC級別的處理器。除配備激光雷達(dá)外,還需要機(jī)器人具有IMU(慣性測量單元)、里程計來為激光雷達(dá)提供輔助數(shù)據(jù),否則SLAM系統(tǒng)
    發(fā)表于 06-30 15:05

    關(guān)于機(jī)器人定位與建圖,這些小技巧你懂嗎

    說到機(jī)器人自主定位導(dǎo)航解決方案及技術(shù),大家腦海里肯定會浮現(xiàn)“定位”、“建圖”、“避障”、“路徑規(guī)劃”等字眼。定位 在思嵐提供的自主定位導(dǎo)航解決方案中,主要是通過雷達(dá)和里程計數(shù)據(jù)來進(jìn)行定位。雖然
    發(fā)表于 03-28 15:48

    機(jī)器人視覺系統(tǒng)組成及定位算法分析

    ,這些眼睛亦可稱為VO(視覺里程計:單目or立體),維基百科給出的介紹:在機(jī)器人和計算機(jī)視覺問題中,視覺里程計就是一個通過分析處理相關(guān)圖像序列來確定機(jī)器人的位置和姿態(tài)。當(dāng)今,由于數(shù)字圖
    發(fā)表于 06-08 08:30

    服務(wù)型智能掃地機(jī)器人的主要功能有哪些呢

    ,實現(xiàn)掃地機(jī)器人運(yùn)動中的自我保護(hù)。(2) 姿態(tài)感知:包括運(yùn)動里程計數(shù)和航向測量等功能,需要獲取掃地機(jī)器人的運(yùn)動速
    發(fā)表于 11-08 09:26

    如何去實現(xiàn)一種送餐機(jī)器人產(chǎn)品設(shè)計

    漂移,環(huán)境中移動物體過多時容易出錯UWB定位誤差十幾厘米,信號容易遮擋視覺二維碼 + 輪子里程計對比后最優(yōu)方案是 視覺二維碼+輪子里程計基于二維碼+輪子里程計方法,主要的傳感器數(shù)據(jù)來源
    發(fā)表于 11-11 07:10

    設(shè)計一個能自由行走并且可以與人語音對話機(jī)器人的設(shè)計資料分享

    機(jī)器人大腦處理并輸出反饋和執(zhí)行動作。本章節(jié)涉及到的傳感器有激光雷達(dá)、IMU、輪式里程計、麥克風(fēng)、音響、攝像頭,和用于處理信息的嵌入式主板。關(guān)于傳感器的ROS驅(qū)動程序開發(fā)和在機(jī)器人上的使用在后面的章節(jié)會展開,...
    發(fā)表于 12-17 06:58

    基于全景視覺與里程計的移動機(jī)器人自定位方法

    通過分析全景視覺與里程計傳感器的感知模型的不確定性,提出了一種基于路標(biāo)觀測的 移動機(jī)器人 自定位算法. 該算法利用卡爾曼濾波器,融合多種傳感器在不同觀測點(diǎn)獲取的觀測數(shù)據(jù)
    發(fā)表于 06-28 10:58 ?41次下載
    基于全景視覺與<b class='flag-5'>里程計</b>的移動<b class='flag-5'>機(jī)器人</b>自定位方法

    汽車里程計數(shù)項目PCB文件

    汽車里程計數(shù)項目PCB文件
    發(fā)表于 02-27 16:43 ?10次下載

    視覺里程計的詳細(xì)介紹和算法過程

    在導(dǎo)航系統(tǒng)中,里程計(odometry)是一種利用致動器的移動數(shù)據(jù)來估算機(jī)器人位置隨時間改變量的方法。例如,測量輪子轉(zhuǎn)動的旋轉(zhuǎn)編碼器設(shè)備。里程計總是會遇到精度問題,例如輪子的打滑就會導(dǎo)
    的頭像 發(fā)表于 08-08 14:21 ?2.8w次閱讀
    視覺<b class='flag-5'>里程計</b>的詳細(xì)介紹和算法過程

    輪式移動機(jī)器人里程計分析

    但凡涉及到可移動的機(jī)器人的導(dǎo)航系統(tǒng),大概率會涉及到里程計的計算,比如輪式移動機(jī)器人、無人機(jī)、無人艇,以及多足機(jī)器人等,而計算里程計的方案也有
    的頭像 發(fā)表于 04-19 10:17 ?2993次閱讀

    介紹一種基于編碼器合成里程計的方案

    摘要:本文主要分析輪式移動機(jī)器人的通用里程計模型,并以兩輪差速驅(qū)動機(jī)器人里程計計算為案例,給出簡化后的兩輪差速驅(qū)動機(jī)器人
    的頭像 發(fā)表于 04-19 10:16 ?3562次閱讀

    ROS機(jī)器人導(dǎo)航調(diào)參手冊

    在 ROS 中,我們可以輸出帶有時間戳的里程計數(shù)據(jù),然后看機(jī)器人達(dá)到恒定的最大平移速度(ti)需要多長時間,然后使用來自里程計數(shù)據(jù)(nav_msgs/Odometry message)來計算這個過程的加速度。多做幾次實驗求平均值
    的頭像 發(fā)表于 11-03 17:04 ?3961次閱讀
    ROS<b class='flag-5'>機(jī)器人</b>導(dǎo)航調(diào)參手冊

    ROS與移動底盤的通信試驗內(nèi)容

    ROS與STM32的通信流程如圖所示 主要包含兩個方面: 小車里程計數(shù)據(jù)上傳接收 控制指令的下發(fā)與接收 1.原始消息內(nèi)容 在ROS中,里程計數(shù)據(jù)
    的頭像 發(fā)表于 11-16 16:36 ?1041次閱讀
    ROS與移動底盤的通信試驗內(nèi)容

    機(jī)器人里程計數(shù)據(jù)可視化

    STM32端返回的x軸線速度、y軸線速度是相對于自身的機(jī)體坐標(biāo)系的速度,而機(jī)器人的位置信息是相對于世界坐標(biāo)系的位置,所以在對速度進(jìn)行積分前, 要先將機(jī)體坐標(biāo)系下的x軸線速度、y軸線速度轉(zhuǎn)換到世界坐標(biāo)
    的頭像 發(fā)表于 11-16 16:58 ?810次閱讀
    <b class='flag-5'>機(jī)器人</b><b class='flag-5'>里程計數(shù)據(jù)</b>可視化