ROS(indigo) 用于机器人控制的图形化编程工具--code_it robot_blockly

举报
zhangrelay 发表于 2021/07/15 06:32:46 2021/07/15
【摘要】 0 简介: 编程语言有汇编,高级语言,解释语言等,现在图形化编程也越来越流行。图形化编程简单易学。8年前,微软推出了VPL用于机器人程序设计,如Python和JavaScript都可以用图形化框图实现程序,有趣直观。 视频介绍教程,请参考:http://v.youku.com/v_show/id_XMTc4NjkwMDgyOA 当然也可以用Matlab的Simulink实现:...

0 简介:

编程语言有汇编,高级语言,解释语言等,现在图形化编程也越来越流行。图形化编程简单易学。8年前,微软推出了VPL用于机器人程序设计,如Python和JavaScript都可以用图形化框图实现程序,有趣直观。

视频介绍教程,请参考:http://v.youku.com/v_show/id_XMTc4NjkwMDgyOA

当然也可以用Matlab的Simulink实现:

https://cn.mathworks.com/help/robotics/examples/get-started-with-ros-in-simulink.html

图1


LiveBlox就是典型的一种,具体参考之前博客:http://blog.csdn.net/ZhangRelay/article/details/51991997

1 参考资料:

这里主要介绍用于ROS的图形化编程工具,首先,主要参考网址如下:

https://github.com/erlerobot/robot_blockly

https://github.com/hcrlab/code_it

其中,1 robot_blockly实现简洁,并且介绍详细,这里不过多介绍。

这里主要介绍2 code_it。

2 一个简单交互的例子Blinky:

图2


2.1 安装:

依次输入下面命令:


  
  1. curl -sL https://deb.nodesource.com/setup_5.x | sudo -E bash -
  2. sudo apt-get install -y nodejs

https://github.com/hcrlab/blinky

sudo apt-get install ros-indigo-rosbridge-server
 

~/catkin_ws/src/blinky-indigo-devel/frontend$ 依次


  
  1. npm install -g gulp bower
  2. npm install
  3. bower install

并用nvm use 4.6.1,选择合适的node版本。


  
  1. ~/catkin_ws/src/blinky-indigo-devel/frontend$ nvm use 4.6.1
  2. Now using node v4.6.1 (npm v2.15.9)


  
  1. ~/catkin_ws/src/blinky-indigo-devel/frontend$ gulp
  2. [13:51:49] Using gulpfile ~/catkin_ws/src/blinky-indigo-devel/frontend/gulpfile.js
  3. [13:51:49] Starting 'clean'...
  4. [13:51:50] Finished 'clean' after 472 ms
  5. [13:51:50] Starting 'default'...
  6. [13:51:50] Starting 'copy'...
  7. [13:51:50] Starting 'styles'...
  8. [13:51:51] styles all files 98 B
  9. [13:51:51] Finished 'styles' after 1.08 s
  10. [13:51:52] copy all files 16.77 MB
  11. [13:51:52] Finished 'copy' after 2.1 s
  12. [13:51:52] Starting 'elements'...
  13. [13:51:52] Finished 'elements' after 9.34 ms
  14. [13:51:52] Starting 'lint'...
  15. [13:51:53] Starting 'images'...
  16. [13:51:53] Starting 'fonts'...
  17. [13:51:53] Starting 'html'...
  18. [13:51:54] Finished 'fonts' after 461 ms
  19. [13:51:57] Finished 'lint' after 5.48 s
  20. [13:51:57] gulp-imagemin: Minified 7 images (saved 1.45 kB - 3.2%)
  21. [13:51:57] images all files 43.69 kB
  22. [13:51:57] Finished 'images' after 4.08 s
  23. [13:51:57] html all files 83.06 kB
  24. [13:51:57] Finished 'html' after 4.01 s
  25. [13:51:57] Starting 'vulcanize'...
  26. [13:52:00] vulcanize all files 628.85 kB
  27. [13:52:00] Finished 'vulcanize' after 2.53 s
  28. [13:52:00] Finished 'default' after 10 s

2.2 使用:

分别在不同终端输入下面命令:

~$ roslaunch rosbridge_server rosbridge_websocket.launch
 

  
  1. logging to /home/exbot/.ros/log/084a8eba-a18a-11e6-9113-70f1a1ca7552/roslaunch-relay-Aspire-4741-6570.log
  2. Checking log directory for disk usage. This may take awhile.
  3. Press Ctrl-C to interrupt
  4. Done checking log file disk usage. Usage is <1GB.
  5. started roslaunch server http://relay-Aspire-4741:38297/
  6. SUMMARY
  7. ========
  8. PARAMETERS
  9. * /rosbridge_websocket/address:
  10. * /rosbridge_websocket/authenticate: False
  11. * /rosbridge_websocket/delay_between_messages: 0
  12. * /rosbridge_websocket/fragment_timeout: 600
  13. * /rosbridge_websocket/max_message_size: None
  14. * /rosbridge_websocket/port: 9090
  15. * /rosbridge_websocket/retry_startup_delay: 5
  16. * /rosdistro: indigo
  17. * /rosversion: 1.11.20
  18. NODES
  19. /
  20. rosapi (rosapi/rosapi_node)
  21. rosbridge_websocket (rosbridge_server/rosbridge_websocket)
  22. auto-starting new master
  23. process[master]: started with pid [6582]
  24. ROS_MASTER_URI=http://localhost:11311
  25. setting /run_id to 084a8eba-a18a-11e6-9113-70f1a1ca7552
  26. process[rosout-1]: started with pid [6595]
  27. started core service [/rosout]
  28. process[rosbridge_websocket-2]: started with pid [6602]
  29. process[rosapi-3]: started with pid [6613]
  30. registered capabilities (classes):
  31. - rosbridge_library.capabilities.call_service.CallService
  32. - rosbridge_library.capabilities.advertise.Advertise
  33. - rosbridge_library.capabilities.publish.Publish
  34. - rosbridge_library.capabilities.subscribe.Subscribe
  35. - <class 'rosbridge_library.capabilities.defragmentation.Defragment'>
  36. - rosbridge_library.capabilities.advertise_service.AdvertiseService
  37. - rosbridge_library.capabilities.service_response.ServiceResponse
  38. - rosbridge_library.capabilities.unadvertise_service.UnadvertiseService
  39. [INFO] [WallTime: 1478152491.544249] Rosbridge WebSocket server started on port 9090
  40. [INFO] [WallTime: 1478152523.004659] Client connected. 1 clients total.
  41. [INFO] [WallTime: 1478152524.576138] [Client 0] Subscribed to /blinky/goal
  42. [INFO] [WallTime: 1478152524.583260] [Client 0] Subscribed to /blinky/cancel

~/catkin_ws/src/blinky-indigo-devel/frontend$ gulp serve
 


  
  1. [13:55:03] Using gulpfile ~/catkin_ws/src/blinky-indigo-devel/frontend/gulpfile.js
  2. [13:55:03] Starting 'lint'...
  3. [13:55:05] Starting 'styles'...
  4. [13:55:06] Starting 'elements'...
  5. [13:55:06] Starting 'images'...
  6. [13:55:06] Finished 'elements' after 128 ms
  7. [13:55:06] styles all files 98 B
  8. [13:55:06] Finished 'styles' after 1.36 s
  9. [13:55:07] Finished 'lint' after 3.49 s
  10. [13:55:07] gulp-imagemin: Minified 7 images (saved 1.45 kB - 3.2%)
  11. [13:55:07] images all files 43.69 kB
  12. [13:55:07] Finished 'images' after 1.71 s
  13. [13:55:07] Starting 'serve'...
  14. [13:55:07] Finished 'serve' after 101 ms
  15. [PSK] Access URLs:
  16. --------------------------------------
  17. Local: http://localhost:5001
  18. External: http://192.168.1.102:5001
  19. --------------------------------------
  20. UI: http://localhost:3001
  21. UI External: http://192.168.1.102:3001
  22. --------------------------------------
  23. [PSK] Serving files from: .tmp
  24. [PSK] Serving files from: app

图3


输入:http://localhost:3001/,就可以看到:

图4



  
  1. $ rostopic list
  2. /blinky/cancel
  3. /blinky/feedback
  4. /blinky/goal
  5. /blinky/result
  6. /blinky/status
  7. /rosout
  8. /rosout_agg


  
  1. rostopic pub -1 blinky/goal blinky/FaceActionGoal "header:
  2. seq: 0
  3. stamp:
  4. secs: 0
  5. nsecs: 0
  6. frame_id: ''
  7. goal_id:
  8. stamp:
  9. secs: 0
  10. nsecs: 0
  11. id: ''
  12. goal:
  13. display_type: 'displayMessage'
  14. h1_text: 'Hi relay,this is OK'
  15. h2_text: 'Do you happy Now?'"
图5


更多内容查看原版介绍,发现更多惊喜。


3 图形化编程CodeIt!

一个独立的Blockly编程应用程序,并与ROS集成。 它允许您使用图形界面生成机器人的代码,并运行它。 你实现机器人的“创意”,它们与JavaScript的一个子集结合形成程序。您从界面可以运行程序并在程序中停止它们。
CodeIt! 与RWS兼容。


它是如何工作的?
CodeIt!提供前端和后端。前端是一个网站,它允许您使用Blockly编程接口创建程序。它还具有用于添加,更新或删除程序的简单界面。
后端提供了一个运行JavaScript程序的ROS actionlib服务器。程序通过沙盒解释器运行。您必须定义解释器将运行的机器人基元。大多数原语只做了很少的工作,只是调用ROS服务。后端还包括已创建的程序的数据库。
注意CodeIt!本身并不实现任何机器人功能。相反,它调用ROS服务来做机器人上的实际工作,假定存在提供这些服务的一些节点。由你来实现这些服务来做你的机器人的事情。我们有一些预先实现的这些服务的PR2和Turtlebot。然而,这些仍处于发展的早期阶段,没有记录。如果您真的有兴趣使用这些,请通过提交问题与我们联系,我们将很乐意提供帮助。

3.1 安装

这个项目使用Git子模块,所以使用git clone --recursive git@github.com:hcrlab / code_it.git克隆这个repo。
要安装,您需要克隆:
blinky - 用于基于Web的机器人面的ROS包
code_it_msgs
location_server
- 用于存储和检索要导航到的位置
code_it_turtlebotcode_it_pr2 - 这些实现ROS服务实际控制机器人,CodeIt!调用。您也可以自己为另一个机器人实现这些服务,请参阅code_it_msgs查看当前定义的服务。
您还需要安装:
MongoDB - 安装MongoDB和pymongo
确保pymongo是版本3(例如,3.3),如果没有,升级使用命令:sudo pip install pymongo --upgrade
Meteor
- 从Meteor网站安装,ubuntu直接在终端输入:curl https://install.meteor.com/ | sh
Node
- 强烈建议使用nvm安装Node。 nvm允许您轻松地在任意版本的节点之间安装和切换。当部署到生产环境时,Meteor需要正确地构建旧版本的节点,而gulp需要更新版本的节点。使用nvm在两者之间进行切换。
frontend文件夹,运行npm install -g gulp bower && npm install && bower install


3.2 运行

主要分为四步,分别在不同终端运行,步骤和解释如下:

1 roslaunch rosbridge_server rosbridge_websocket.launch
2 rosrun code_it programs.py - 这是保存和加载程序到MongoDB和从MongoDB的后端。
3 从后端文件夹,运行 nvm use 0.10.40; meteor - 这是运行程序的JavaScript解释器。
4 从frontend文件夹,运行 nvm use node; gulp serve - 这是前端。 用浏览器localhost:5000查看页面。

图6


注意:meteor和gulp必须正常加载,如果报错需要结合情况进行调试,出现如下结果,就OK!:

meteor:


  
  1. exbot@relay-Aspire-4741:~/catkin_ws/src/code_it-indigo-devel/backend$ meteor
  2. [[[[[ ~/catkin_ws/src/code_it-indigo-devel/backend ]]]]]
  3. => Started proxy.
  4. => Meteor 1.4.2 is available. Update this project with 'meteor update'.
  5. => Started MongoDB.
  6. => Started your app.
  7. => App running at: http://localhost:3000/
  8. I20161103-14:23:00.028(8)? Error connecting to websocket server.
  9. W20161103-14:23:00.026(8)? (STDERR) DEBUG: ROSLib uses utf8 encoding by default.It would be more efficent to use ascii (if possible)

gulp:


  
  1. exbot@relay-Aspire-4741:~/catkin_ws/src/code_it-indigo-devel/frontend$ gulp
  2. [14:22:02] Using gulpfile ~/catkin_ws/src/code_it-indigo-devel/frontend/gulpfile.js
  3. [14:22:02] Starting 'clean'...
  4. [14:22:03] Finished 'clean' after 633 ms
  5. [14:22:03] Starting 'default'...
  6. [14:22:03] Starting 'copy'...
  7. [14:22:03] Starting 'styles'...
  8. [14:22:05] styles all files 115.06 kB
  9. [14:22:05] Finished 'styles' after 2.21 s
  10. [14:22:06] copy all files 25.72 MB
  11. [14:22:06] Finished 'copy' after 3.53 s
  12. [14:22:06] Starting 'elements'...
  13. [14:22:06] Finished 'elements' after 9.43 ms
  14. [14:22:06] Starting 'lint'...
  15. [14:22:08] Starting 'images'...
  16. [14:22:09] Starting 'fonts'...
  17. [14:22:09] Starting 'html'...
  18. [14:22:09] Finished 'fonts' after 797 ms
  19. [14:22:13] Finished 'lint' after 7.14 s
  20. [14:22:13] gulp-imagemin: Minified 6 images (saved 494 B - 1.4%)
  21. [14:22:13] images all files 35.41 kB
  22. [14:22:13] Finished 'images' after 5.08 s
  23. [14:22:15] html all files 747.78 kB
  24. [14:22:15] Finished 'html' after 5.94 s
  25. [14:22:15] Starting 'vulcanize'...
  26. [14:22:19] vulcanize all files 1.52 MB
  27. [14:22:19] Finished 'vulcanize' after 3.95 s
  28. [14:22:19] Finished 'default' after 16 s

图7


启动后效果如下:

图8


图9


-End-


文章来源: zhangrelay.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。

原文链接:zhangrelay.blog.csdn.net/article/details/53020569

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。