导航

    蓝鲸ROS机器人论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 热门
    1. 主页
    2. frank
    3. 帖子
    ROS交流群
    ROS Group
    产品服务
    Product Service
    开源代码库
    Github
    官网
    Official website
    技术交流
    Technological exchanges
    激光雷达
    LIDAR
    ROS教程
    ROS Tourials
    深度学习
    Deep Learning
    机器视觉
    Computer Vision
    • 资料
    • 关注 0
    • 粉丝 4
    • 主题 88
    • 帖子 139
    • 最佳 1
    • 群组 1

    frank 发布的帖子

    • RE: 【盘点】2016新型服务机器人

      第一款ANBOT有山寨嫌疑

      发布在 行业动态
      frank
      frank
    • 国产超算260核处理器背后的DEC公司

      最近采用国产cpu的超算平台荣登世界超级计算机性能排行榜榜首,采用的260核sw26010处理器是无锡江南计算技术研究所(56所)设计的,56所的确nb,但他不是本文重点。通过百科里的介绍可知56所的cpu设计技术起源于美国的DEC公司的alpha 21164 处理器架构,再搜索一下DEC会发现这是一家很神奇而悲催的 公司。

      Digital Equipment Corporation成立于1957年,明明是家计算机公司,招牌上却不带计算机字样。这个低调的公司以PDP/VAX系列小型机造就了IT界小型机/工作站这一片广阔的市场空间(UNIX和C都是在PDP-7上首先实现的!)。
      它在90年代初有一个惊人的的举措:投入20亿美元开发一个全新的64位RISC处理器核心。这个伟大工程的结果1994年出现了一个被命名为Alpha的处理器系列。第一代CPU被称为Alpha21064,21意为alpha是一款面向21世纪的新架构,0代表处理器的版本,64代表具备64-bit的计算能力——就是说这是一系列面向21世纪的64位计算机核心。这个系列一出世便震动了计算机界——它的性能是当时的吉尼斯世界记录,而此系列的后继者之后多年仍继续保持着世界第一的记录。
      但是技术领先并不能保证在市场上也会一定领先,1998年Compaq公司斥资96亿美元收购了DEC,而Compaq公司2002年5月又与惠普合并,至此DEC公司彻底淡出业界视野。

      破产被收购后,DEC公司的两位大牛分别进入了AMD和微软公司,进入AMD的Dirk Meyer(梅德克)领导设计了AMD公司史上最成功的x86 cpu架构k7(吊打同时代的奔腾4 Northwood架构)。而进入微软的David Cutler(卡特勒)则领导原DEC团队设计了window NT内核架构,win10使用的还是NT内核。

      这么一家具备优秀产品和大神云集的公司就这么破产了,各种黑科技魔法都失效了,让人唏嘘不已

      发布在 杂谈
      frank
      frank
    • 为ROS navigation功能包添加自定义的全局路径规划器(Global Path Planner)

      ROS 的navigation官方功能包提供了三种全局路径规划器:carrot_planner、global_planner、navfn。我们通常使用的是navfn,如果机器人执行一些特殊任务而navfn不支持的话就需要自己写一个全局路径规划区并注册到ROS系统。
      ROS的全局路径规划器是以lib插件形式(pluginlib)存在的,通过配置move_base 中base_global_planner参数指定实际路径规划执行时采用的全局路径规划器,这种设计大大提高了navigation包的可扩展性。
      ROS官网wiki有详细的教程指导大家如何为ROS添加自定义的全局路径规划器,操作步骤挺繁琐的,在了解原理之后我们其实可以用下文的偷懒方法实现自己的全局路径规划器。主要思路是:直接拷贝一份现成的全局路径规划器代码包,将软件包中的相关名字修改成想要的,最后实现下自己的makeplan方法即可。

      1.从navigation包中拷贝carrot_planner文件夹下的所有内容到ROS源码工作目录。
      以小强ROS机器人为例:
      cd Documents/ros/src/               进入ROS源码工作目录
      cp -a  navigation/carrot_planner test_planner  拷贝一份carrot_planner代码到test_planner文件夹下,test可以改成自己想要的任何名字,这个名字即为下文咱们自定义的全局规划器
      

      2.开始修改名字,将拷贝的文件夹(test_planner)内的所有文件中的carrot字符换成test,包括文件名中的字符

      需要修改内容的文件有:
      test_planner/include/carrot_planner/carrot_planner.h
      test_planner/src/carrot_planner.cpp
      test_planner/bgp_plugin.xml
      test_planner/CMakeLists.txt
      test_planner/package.xml
      需要修改名字的文件有:
      test_planner/include/carrot_planner/carrot_planner.h
      test_planner/src/carrot_planner.cpp
      需要修改名字的文件夹有:
      include下的carrot_planner文件夹
      

      3.尝试编译

      以小强ROS机器人为例:
      cd Documents/ros/
      catkin_make  
      

      4.检查test_planner是否成功注册进ROS系统

      rospack plugins --attrib=plugin nav_core
      正常的话会返回如下内容,可以查看到test_planner
      rotate_recovery /home/xiaoqiang/Documents/ros/src/navigation/rotate_recovery/rotate_plugin.xml
      base_local_planner /home/xiaoqiang/Documents/ros/src/navigation/base_local_planner/blp_plugin.xml
      global_planner /home/xiaoqiang/Documents/ros/src/navigation/global_planner/bgp_plugin.xml
      navfn /home/xiaoqiang/Documents/ros/src/navigation/navfn/bgp_plugin.xml
      move_slow_and_clear /home/xiaoqiang/Documents/ros/src/navigation/move_slow_and_clear/recovery_plugin.xml
      dwa_local_planner /home/xiaoqiang/Documents/ros/src/navigation/dwa_local_planner/blp_plugin.xml
      clear_costmap_recovery /home/xiaoqiang/Documents/ros/src/navigation/clear_costmap_recovery/ccr_plugin.xml
      carrot_planner /home/xiaoqiang/Documents/ros/src/test_planner/bgp_plugin.xml
      test_planner /home/xiaoqiang/Documents/ros/src/ test_planner/bgp_plugin.xml
      
      5.根据自己的算法重写test_planner/src/test_planner.cpp中的makeplan方法,然后重新用catkin_make编译,至此咱们的全局路径规划器就打完收工了可以在move_base中使用了
      6.在move_base节点中使用新建立的test_planner路径规划器
      在move_base的启动launch文件节点中加入如下代码即可
      <param name="base_global_planner" value="test_planner/testPlanner"/>
      
      发布在 技术交流
      frank
      frank
    • 中星微发布NPU(神经网络处理器)VC0758,支持Caffe、TensorFlow等主流机器学习开源架构

      量产3个月后,中星微正式发布 “星光智能一号” 嵌入式 NPU VC0758
      alt text

      神经网络处理器NPU对比通用cpu在深度学习领域的能效比可以提高几个数量级,使用NPU可以大大缩小神经网络系统对通用cpu核心数量的要求。打败李世石的alphago系统使用了上千个x86 架构CPU核心,如果配合使用专用NPU将其完整运行在单台服务器上也是可行的。

      NPU的设计需要依据具体的神经网络算法进行优化,而中星微在深度学习领域并未深耕,如果不提供成熟的机器学习运用方案,VC0758在未来的机器学习市场中一定不能抢占先机。因此中星微这次的战略布局,其效果很可能会像其主页一样,芯片刚发布其设计思想就已经落后整个时代。

      对于国产NPU市场,深耕深度学习的地平线机器人在未来肯定会是主角。

      发布在 行业动态
      frank
      frank
    • 这论坛缺点啥?

      板块有点傻傻分不清

      发布在 讨论区
      frank
      frank
    • 乐行天下已成功量产“kinect”,下月将推消费级激光雷达

      借助TI去年公布的TOF方案,专注两轮平衡车市场的乐行天下宣称已经量产成功TOF摄像头,下月将量产采用相同TOF技术的激光雷达。在此之前,国内千元价位消费级激光雷达厂家主要有上海的思岚科技和北京的北醒光子科技。

      发布在 行业动态
      frank
      frank
    • 分享一些ROS教程文档

      共享在百度云里,请自行下载查看
      http://pan.baidu.com/s/1boF91Pt

      发布在 技术交流
      frank
      frank
    • 小强ROS机器人教程(2)___蓝鲸智能开源软件仓库的使用和ROS开机启动任务的配置

      小强主页

      小强的所有软件源码都共享在蓝鲸智能的开源仓库里,任何人任何组织都可以自由下载使用或进行二次开发,Github仓库 Gitee仓库

      对于小强用户,开源仓库中的软件可以直接git clone到小强的ROS工作目录里,然后就可以直接用ROS的工具链catkin_make编译使用。小强的ROS工作目录为:/home/xiaoqiang/Documents/ros/src

      下文将以开源仓库中的startup软件包为例,演示开源仓库的完整使用过程。

      一、startup软件包功能介绍

      小强主机开机后,会自动启动名字为startup的linux服务脚本,startup服务脚本运行时会去启动 startup 软件包中的startup.launch文件 在Ubuntu系统中注册的复制品。因此我们通过修改startup软件包中的startup.launch文件,然后将这个文件在ubuntu系统中注册为startup服务,就能控制小强主机的开机启动任务了。

      二、修改软件包中launch文件夹内的startup.launch文件

      利用上篇教程安装的vscode编辑器,在本地遥控端直接编辑这个文件(需要远程访问小强的主机文件目录,请参考上篇基础操作教程进行配置)

      在上图箭头区域,添加或删除你需要启动的ROS launch文件及ROS node,这些项目在下文将被添加进小强主机的开机启动项里,小强下次开机会自动运行这些项目。最后保存退出

      三、将startup.launch文件在小强主机中注册为startup 开机启动服务

      接着二中的机器人命令行窗口输入

      a.首先将之前注册的startup服务停止和删除

      sudo service startup stop
      rosrun robot_upstart uninstall startup
      

      b.重新注册startup 开机启动服务

      rosrun robot_upstart install startup/launch/startup.launch
      sudo systemctl daemon-reload && sudo systemctl start startup
      

      四、远程重启小强主机,查看开机启动项是否正常加载

      接着上文的ssh窗口输入

      下发重启命令

      sudo reboot
      

      查看startup服务状态

      sudo service startup status
      

      正常的话会显示startup start/running 如下图所示
      0_1537506906365_9d541bb9-c763-43ae-afb1-d0c2c31f369c-image.png
      d.还可以进一步查看相关的topic 是否已经发布出来

      rostopic list
      

      小强主页
      返回目录

      发布在 产品服务
      frank
      frank
    • 小强ROS机器人教程(1)___基础操作介绍

      开始之前

      以下的教程重点在于使用小强的各种功能,并不包含对ROS的教学。如果您是ROS的初学者,请在进行下面的教程的同时跟进学习ROS基础知识。 请不要只跟着我们的教程输入指令,要理解每一个命令的具体含义。遇到问题时也要善于自己寻找问题的原因,这些对于以后的工作学习都会很有帮助。如果您遇到了关于教程或者ROS不理解的地方也欢迎在我们ROS交流群(538456117)中提问。

      小强主页

      小强pro淘宝购买链接

      小强mini淘宝购买连接

      首先请您自行依据线标提示将小强接线连接好,完整结构如下图所示

      0_1489979801267_接线1.png

      1.配置小强网络

      使用赠送的hdmi转vga插头(小强mini可以直接使用vga),将显示器和键盘鼠标接入小强主机后开机,进入主机ubuntu系统。

      小强默认密码是 xiaoqiang

      点击下图位置,选择需要接入的无线网络

      0_1464316931330_network.png

      接入网络后,点击下图位置得到小强的实际ip地址,后续教程会频繁使用到这个ip信息

      0_1464319428779_network2.png

      0_1464319447954_network3.png

      小强的ROS默认工作目录在这里

      0_1464321461401_filesystem.png

      现在小强已经配置完成了,关机后拔掉键盘鼠标和显示器,下次小强直接开机就能使用

      2.本地遥控端配置

      由于小强安装了VNC远程桌面,本地遥控端只需要安装一个VNC Viewerhttps://www.realvnc.com/en/connect/download/viewer/即可。
      同时保证本地遥控端必须和小强在同一个局域网下

      后续由于需要频繁的更改机器人上的文件,建议在本地电脑上安装VSCode。同时安装ROS插件和远程连接插件。通过远程连接方便的对机器人进行修改。

      现在您已经具备小强的完整开发使用条件,例如ssh登录小强主机,输出机器人当前电压

      通过VNC在机器人上打开一个命令行终端,输入以下指令

      rostopic echo /xqserial_server/Power
      

      正常输入如下

      power.png

      不同型号机器人的电压可能会不同。

      小强主页
      返回目录

      发布在 产品服务
      frank
      frank
    • 小强ROS机器人教程(4)___惯性导航自主移动测试

      小强主页

      上一篇教程中,我们已经制作出了小强的3d模型,接下来开始测试小强的惯性导航功能。
      这里的惯性导航,是指利用小强自身佩戴的惯性传感器(加速度和陀螺仪)和底盘编码器器信息进行定位和移动。需要的ROS软件包有:

      1. 底层驱动xqserial_server
      2. 机器人模型包xiaoqiang_udrf
      3. 惯性导航测试软件包nav_test

      先上教程最后效果图

      整个导航测试的内部框架如下两图所示

      0_1464270870030_navigaion总体介绍.jpg
      0_1464272794422_framework.png

      VNC方式在小强主机上完成的操作

      请确保小强已经正常启动,小强主机正常启动完成后会自动运行上面提到的三个软件包,不需要手工启动相应的launch文件。如果是前期购买的用户,请自行更新安装这三个软件包,同时更新startup任务(请参考robot_upstart教程),再重新启动。

      通过VNC在机器人上打开命令行

      # 重启服务程序,有些程序基础可能没有运行
      sudo service startup restart
      roslaunch nav_test fake_move_base_blank_map.launch
      

      如果出现了 You must specify at least three point for the robot footprint 这样的错误可以忽略,这个并没有什么影响。这是由于foot_print要求设置一个形状,所以至少要三个点。foot_print就是机器人的轮廓形状,这个参数会用于避障。小强的foot_print设置的是圆形,所以并不需要指定三个点。如果出现的tf树和下图并不相同,请检查一下底盘驱动是不是正常运行

      在机器人上新开一个终端,检查是否所有tf都已经就位

      rosrun tf2_tools view_frames.py
      evince frames.pdf
      

      如果上面的指令提示如下图

      0_1536917254256_df37c595-9034-4507-b447-69b25b2ae144-image.png

      根据提示选择一个view_frame的程序。比如1

      正常会显示下图
      0_1464311306398_topic.png

      在机器人上打开rviz
      当窗口打开后,点击左上角的file->open,选择小强里的/home/xiaoqiang/Documents/ros/src/nav_test/config/nav.rviz文件。这时界面应该如下图显示。
      0_1464274863775_2.png

      在机器人上打开一个新的窗口

      rosrun nav_test square.py
      

      如果小强无法移动,请检查底盘驱动程序是否正常运行。可以输入bwcheck进行自检。如果还是无法移动,可以再检查小强红外传感器是否被触发。触发时红外传感器会发光。

      现在在rviz中就能看到文章开头的视频效果了

      小强主页
      返回目录

      发布在 产品服务
      frank
      frank
    • RE: VirtualBox 虚拟机中 无法打开Rviz的临时解决办法

      windows环境下,建议使用vmware,可以完美开启rviz

      发布在 技术交流
      frank
      frank
    • 小强ROS机器人教程(3)___在rviz中显示小强机器人模型

      小强主页

      实时显示机器人当前姿态是一件很酷的事情,在ROS中借助rviz可以轻松实现这个目标。先看最后的 效果

      小强模型的软件包在Documents/ros/src/xiaoqiang_udrf
      也可以到我们的开源仓库去下载 Github

      # 将小强主机接入显示器和键盘,开机后,打开终端
      # 先关闭开机任务
      sudo service startup stop
      roscore
      # 在小强主机上新开一个终端,启动这个软件包
      roslaunch  xiaoqiang_urdf display.launch 
      

      注意这个过程需要图形化操作,所以没办法通过远程ssh连接操作。如果一定要ssh连接,可以在连接时加上-X(注意是大写的)选项,但是效果不好,并不推荐。推荐通过VNC进行操作。VNC的安装方法可以参照这篇文章
      如果是远程打开模型包,需要先在本地安装xiaoqiang的模型包。对于使用xiaoqiang镜像系统的用户,xiaoqiang的模型包已经提前安装好。

      0_1464183614244_input order.png
      0_1464183624511_first view.png

      此时发现没有任何显示,需要添加rviz显示项目

      0_1464183721418_add model show.png
      0_1464183740524_view2.png

      还是有问题,整个模型透明发白,这是因为rivz中的全局坐标系“fixed frame”设置的不合适,将map改成base_link后即可正常显示

      0_1464183927306_view3.png

      现在操作右上角的滑动条就可以使相应的轮子转动,over!

      上面我们简单演示了rviz显示udrf模型的使用方法,下文将详细介绍在windows系统下用solidworks制作udrf模型的整个过程。

      先用solidworks 建立小车模型,并下载安装好solidwork转udrf插件下载地址.
      制作好模型后,需要补加一个坐标系,这个坐标系在下文将作为整个udrf模型的基准坐标系(即ROS中的base_link frame)。

      0_1464182475253_全局坐标原点.png

      打开udrf插件

      0_1464182530552_打开uhf.png

      小强有两个驱动轮和一个从动轮,所以整个模型需要3个link,3个joint.首先编辑base_link,留意上文中全局坐标系,图片中红色区域就是需要自己点击或者修改的项目

      0_1464182707705_设置baselink.png

      然后是右轮

      0_1464182790718_设置右轮.png

      继续左轮和后轮

      0_1464182912140_设置左轮.png
      0_1464182923953_设置后轮.png

      现在全部设置完成,开始导出

      0_1464182965326_点击输出.png

      一路next和确定下去

      0_1464183014764_next1.png
      0_1464183029511_finish.png
      0_1464183042054_开始保存.png
      0_1464183078985_确定.png

      现在我们已经获到了机器人的udrf文件,生成的整个文件夹是一个ROS包,
      修改launch文件夹内的display.launch文件 ,false改true

      0_1464183267429_change true.png

      将这个ros包复制到ROS工作空间中,catkin_make编译后就可以用本文开头的方法测试使用了。

      小强主页
      返回目录

      发布在 产品服务
      frank
      frank
    • 小强ROS机器人教程(20)___获取小车视觉里程计并在rviz中显示小车轨迹

      这里的视觉里程计由orb_slam2负责发布,发布在/bWmono/Odom话题。

      VNC登录机器人,在机器人上打开命令行

      查看startup 开机任务是否运行

      sudo service startup status
      

      如果显示runing,说明正常,如果显示stopped,则重新启动它

      sudo service startup start
      如果想关闭这个任务,可以使用这条指令
      sudo service startup stop
      

      查看系统状态

      bwcheck
      

      在另一个命令窗口启动ORB_SLAM2

      roslaunch orb_slam2 map.launch
      

      回到上一个窗口,等待ORB_SLAM2启动完毕

      在机器人命令行终端中输入

       rviz
      

      rviz配置文件,这个配置文件也可直接从小强主机上的ORB_SLAM2包中拷贝,用于查看小强视觉系统输出的轨迹

      当窗口打开后,点击左上角的file->open,选择上述配置文件。这时界面应该如下图显示
      0_1460455745309_rviz.png

      通过客户连接机器人,遥控小车前进一小段距离,使orb_slam2初始化完成

      到此我们就已经获取小车的视觉里程计

      随着小强的移动,本机上的rviz界面里就会实时更新显示出小车的轨迹,我们自己的测试视频在这

      关于rviz的更多使用方法请移步这里

      下篇教程

      发布在 产品服务
      frank
      frank
    • 小强电脑与stm32底层串口通讯协议

      串口波特率为115200,8个数据位,1个停止位,无奇偶校验。

      第一部分是上位机对底层下发的控制指令:

      每个指令构成一个数据帧,可以同时下发多个数据帧,帧内容是:包头+长度+内容,包头为3个u8字符:205 235 215 长度是1个u8字符,长度不包括包头和长度字符自身,内容为命令+参数。

      单字符命令,即一个字符完成的命令:
      调试模式 ‘T’
      运行模式 ‘R’
      软件复位 ‘I’

      例如,让stm32软件复位,下发的数据帧hex内容为:0xcd 0xeb 0xd7 0x01 0x49 
      

      双字符命令,即一个字符加一个参数X完成的命令:
      前进 'f‘X , X数值范围为0~100
      后退 'b’X , X数值范围为0~100
      刹车 's’X , X数值任意
      左转 'c’X , X数值范围为0~100
      右转 'd’X , X数值范围为0~100

      例如:
      以80%的制动量制动小车: 0xcd 0xeb 0xd7 0x02  0x73 0x50
      以16%的速度左转:      0xcd 0xeb 0xd7 0x02  0x63 0x10
      以16%的速度右转:      0xcd 0xeb 0xd7 0x02  0x64 0x10
      

      多字符带参数命令:
      设置电机 't’XXXXxxxx
      命令说明:完整命令格式tABCDabcd,总共9个字符。t为命令标识,表示设置电机命令
      ABCD分别为1–4个电机的状态,每个字符有三种状态,F:向前,B:向后,S:刹车,
      其他字符无效。abcd为四个电机的速度等级,范围0~100,即以字符的数值表示速度

      例如:
      
      让四个电机全部以0%的制动量刹车 tSSSS0000 
      对应帧内容为 0xcd 0xeb 0xd7 0x09 0x74 0x53 0x53 0x53 0x53 0x00 0x00 0x00 0x00 
      
      对于小强硬件,只有前两个电机有效,第一个电机对应右轮,第二个电机对应左轮
      

      第二部分是底层给上位机上传的数据:

      也是数据帧的形式上传,上传频率为50HZ。帧格式和上面的命令帧一样,只是把命令内容换成了数据。
      数据内容是由23个4字节小端模式二进制表示的数字组成,数字之间用空格0x20分开。这23个数字可以构成如下结构体,建议使用内存拷贝的方式直接将数据内容拷贝给这个结构体,然后以结构体形式访问数据,这样可以避免浮点数转换问题。具体代码请参考我们git开源仓库中的上位机ros驱动。

      typedef struct {
          int status;//小车状态,0表示未初始化,1表示正常,-1表示error
          float power;//电源电压【9 13】v
          float theta;//方位角,【0 360)°
          int encoder_ppr;//车轮1转对应的编码器个数
          int encoder_delta_r;//右轮编码器增量, 个为单位
          int encoder_delta_l;//左轮编码器增量, 个为单位
          int encoder_delta_car;//两车轮中心位移,个为单位
          int omga_r;//右轮转速 个每秒
          int omga_l;//左轮转速 个每秒
          float distance1;//第一个超声模块距离值 单位cm
          float distance2;//第二个超声模块距离值 单位cm
          float distance3;//第三个超声模块距离值 单位cm
          float distance4;//第四个超声模块距离值 单位cm
          float IMU[9];//mpu9250 9轴数据
          unsigned int time_stamp;//时间戳
      }UPLOAD_STATUS; 
      
      发布在 产品服务
      frank
      frank
    • 小强底层固件下载和升级办法

      2017年3月11日之后收到小强的用户,请参考这篇帖子升级固件,无法升级时请询问客服后再使用下面的方法。手动升级有风险,操作前请咨询客服。

      小强v4_3.hex ,右键"另存为…"下载后重名为xiaoqiang.hex

      固件是普通hex文件,支持任何stm32下载器。stm32烧录后,请根据升级底盘ros驱动包xqserial_server完成上位机更新操作。最后根据这篇教程重新校准底盘IMU。

      下文介绍使用小强自带的u转串烧写stm32的方法,经过本次升级,以后可以使用这篇帖子中的简便升级方法。

      1.找到1台windows电脑,下载安装这份stm32flash软件

      flash_loader_demo_v2.8.0.exe ,右键选择“另存为…”启动下载

      2.小强底盘断电后,先拔下绿色电机驱动板上中间的“VMOT GND”接线,慢慢拔下底盘上的stm32核心板,然后按照下图调整板子上的两个短接帽

      0_1488614031259_IMG_1257(20170304-154308).jpg
      0_1488616063237_1.JPG

      3.将2中调整完后的stm32板子插回底盘,注意引脚需要全部对准插入基座,然后给底盘上电。

      4.将小车上的u转串模块usb头从小车主机上拔下后插入windows电脑,从开始程序菜单打开Flash Loader Demo程序,所有程序->STMicroelectronics-> Demonstrator GUI,出现如下界面

      0_1488614855119_st1.PNG

      5.选择默认设置即可,一直点next(如果点击next失败,重新给底盘上电后再试),出现如下界面:

      0_1488615222510_st2.PNG

      6.选择Download to device,选择上面提供的 hex文件,点Next开始下载

      0_1488615572934_st3.PNG
      0_1488615610177_st4.PNG

      7.烧录完成,关闭软件,小车底盘断电,将u转串插回小车主机。

      8.再次慢慢拔下底盘上的stm32核心板,调整板子上的两个短接帽恢复到初始状态后,插回底盘(引脚需要全部对准插入基座),将绿色电机驱动板上中间的“VMOT GND”接线插上,stm32升级完成!

      0_1488616023260_IMG_1256.JPG

      9.小车底盘重新上电,根据文章开头提示完成上位机的升级。

      发布在 产品服务
      frank
      frank
    • Matlab 动态生成执行语句及构造动态输入变量名

      对于matlab,自动化benchmark某子功能程序块时需要将一些变量dump出来,怎么将dump出来的变量放在一起调试呢?dump变量是用save,load变量就用load语句,但是保存的变量名是一样的时候就不能同时load了,会发生覆盖。如果每个运行实例中,这个变量的名字都是不同的,就不存在这个问题了。下述代码段将根据数值变量num的值,动态生产A变量副本的名字,并保存A变量副本到不同的文件中,num变量通常是测试实例的编号,这样后续调试时可以快速定位当时运行的benchmark实例

      str_temp=sprintf('A_%d=A',num);
      eval(str_temp);
      str_temp=sprintf('save(''A_%d.mat'',''A_%d'');',num,num);
      eval(str_temp);
      

      用sprintf动态生产语句,eval执行语句,就可以了,留意双引号与单引号在matlab中的区别。
      利用字符串格式化函数sprintf来构造动态执行语句,对于自动化脚本是一个根本性地技巧。特别是matlab,因为它的很多库函数的输入变量都用字符串表示。比如,下文的代码段,将自动批量load一组dump出来的变量

      for num=1:666
            load(sprintf('A_%d.mat',num));
      end
      
       利用这些特性,甚至可以在matlab中直接执行python程序,有机会我将提供一个例子
      
      发布在 技术交流
      frank
      frank
    • VirtualBox 虚拟机中 无法打开Rviz的临时解决办法

      在VirtualBox 虚拟机中使用ros 的rviz可视化组件可能会出现如下错误:

      VirtualBox:~$ rviz
      [ INFO] [1458826436.975227564]: rviz version 1.11.10
      [ INFO] [1458826436.975437443]: compiled against OGRE version 1.8.1 (Byatis)
      pci id for fd 24: 80ee:beef, driver (null)
      OpenGL Warning: glFlushVertexArrayRangeNV not found in mesa table
      OpenGL Warning: glVertexArrayRangeNV not found in mesa table
      OpenGL Warning: glCombinerInputNV not found in mesa table
      OpenGL Warning: glCombinerOutputNV not found in mesa table
      OpenGL Warning: glCombinerParameterfNV not found in mesa table
      OpenGL Warning: glCombinerParameterfvNV not found in mesa table
      OpenGL Warning: glCombinerParameteriNV not found in mesa table
      OpenGL Warning: glCombinerParameterivNV not found in mesa table
      OpenGL Warning: glFinalCombinerInputNV not found in mesa table
      OpenGL Warning: glGetCombinerInputParameterfvNV not found in mesa table
      OpenGL Warning: glGetCombinerInputParameterivNV not found in mesa table
      OpenGL Warning: glGetCombinerOutputParameterfvNV not found in mesa table
      OpenGL Warning: glGetCombinerOutputParameterivNV not found in mesa table
      OpenGL Warning: glGetFinalCombinerInputParameterfvNV not found in mesa table
      OpenGL Warning: glGetFinalCombinerInputParameterivNV not found in mesa table
      OpenGL Warning: glDeleteFencesNV not found in mesa table
      OpenGL Warning: glFinishFenceNV not found in mesa table
      OpenGL Warning: glGenFencesNV not found in mesa table
      OpenGL Warning: glGetFenceivNV not found in mesa table
      OpenGL Warning: glIsFenceNV not found in mesa table
      OpenGL Warning: glSetFenceNV not found in mesa table
      OpenGL Warning: glTestFenceNV not found in mesa table
      libGL error: core dri or dri2 extension not found
      libGL error: failed to load driver: vboxvideo
      [ INFO] [1458826438.108511921]: Stereo is NOT SUPPORTED
      [ INFO] [1458826438.110075462]: OpenGl version: 2.1 (GLSL 1.2).
      Segmentation fault (core dumped)
      

      启动失败原因是因为虚拟机的OPENGL驱动存在问题,这部分驱动涉及虚拟机的3d加速支持扩展包,暂时没有好的解决办法。通过设置环境变量,强制Rviz使用软件OPRNGL模式,就可以暂时使用Rviz了,指令如下,留意重启控制台使更改生效

      echo "export LIBGL_ALWAYS_SOFTWARE=1" >> ~/.bashrc
      

      点击参考这个链接

      发布在 技术交流
      frank
      frank
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 7 / 7