您的位置:首页 > 其它

人机智能交互技术(ROS-HRI-人与机器人的智能交互)课程介绍与资料

2017-09-09 13:34 1286 查看
人机智能交互技术(ROS-HRI-人与机器人的智能交互)课程介绍与资料



这是机器人系统设计与控制技术的后续课程,全部的课程内容包括四门课程(本科),如下:



人机智能交互技术是人机融合的基础,课程介绍多种人机交互技术,包括传统和新兴的,围绕人、机器人和交互软件展开。
比较有趣的案例,如下:
1 语音交互:http://blog.csdn.net/zhangrelay/article/details/68951068
2 视觉交互:http://blog.csdn.net/zhangrelay/article/details/53223939
3 感应交互:http://blog.csdn.net/zhangrelay/article/details/52356417
4 脑电交互:http://blog.csdn.net/zhangrelay/article/details/50932120
更多内容,可在网络上进行资料检索。本课程侧重两款常用于机器人的传感器,RGB-D摄像头和Leap Motion手势设备。
三维环境识别感知人体运动识别三维手势跟踪为案例进行具体介绍。


  



  


课程作业:4次实践报告、1次创新大作业。更多内容稍后补充。
----补充阅读:



open_manipulator:https://github.com/ROBOTIS-GIT/open_manipulator/wiki

使用ROS学习机器人编程的系统方法



特色

从零开始学习ROS,不依赖于先前专业知识
基于一系列相关的主题,逐步将ROS娓娓道来
需要具备C ++的基础知识,但是并不需要编程、机器人、机器视觉、运动学/动力学或软件工程方面的专业知识
展示ROS编程技术与Gazebo仿真
提供机器人主题的研习,包括运动学、机器视觉、点云处理、地图构建、导航和用户界面人机接口内容一部分)。

概要

使用ROS学习机器人编程的系统方法通过对简单代码示例以及相应操作理论的详细解释,全面介绍了ROS的基本组件。本书探讨了ROS的组织,如何理解ROS软件包,如何使用ROS工具,如何将现有的ROS软件包纳入新的应用程序,以及如何开发新的机器人和自动化软件包。它还通过准备读者更好地了解现有的在线文档来促进继续教育。这本书分为六部分。1. 首先介绍ROS基础,包括编写ROS节点和ROS工具。消息,类和服务器也被覆盖。2. 本书的第二部分是ROS的仿真和可视化,包括坐标变换。3. 本书的下一部分讨论了ROS中的感知处理。它包括在ROS中使用摄像头,深度成像和点云以及点云处理。4. 本书第四部分介绍了ROS中的移动机器人控制和导航。5. 本书的第五部分包含机器人手臂在ROS中的使用。本节探讨机器人手臂运动学,手臂运动规划,使用Baxter Simulator进行手臂控制以及物体抓取包。6. 本书的最后一部分重点介绍系统集成和更高级别的控制,包括基于感知和移动操作。这部分内容与本课程相关。全部示例和有关C ++代码的信息,请访问https://github.com/wsnewman/learning_ros
代码使用说明
“使用ROS学习机器人编程的系统方法”。代码示例在与章节对应的文件夹中。应将此整个存储库克隆到:〜/ ros_ws / src(假设ros工作区命名为“ros_ws”并位于主目录中)。要执行此操作,请从终端导航至〜/ ros_ws / src,然后输入: 
git clone https://github.com/wsnewman/learning_ros.git
 
并克隆: 
git clone https://github.com/wsnewman/learning_ros_external_packages.git[/code]然后,从终端,导航到〜/ ros_ws并使用命令编译代码: 
catkin_make
如果第一次安装ROS,请参阅以下说明: 安装脚本位于此站点的脚本可自动安装ROS(与使用学习-ROS代码示例的版本和包一致)。这些脚本还安装了各种有用的工具。

在源码中可以看到具体的代码使用说明:
例如第一章learning_ros/Part_1/commands_summary_part1:
---------roscore, messages, nodes----------
catkin_make
(if problems, do:
delete ros_ws/build and ros_ws/devel dirs
catkin_make clean
catkin_make)
roscd
cd src
mkdir ros_class
cd ros_class
cs_create_pkg rosclass_minimal_nodes roscpp std_msgs
(note: cs_create_pkg uses "catkin simple", which is easier than catkin_create_pkg)
cd rosclass_minimal_nodes
ls

-----------minimal publisher--------
open editor (gedit or: netbeans & disown)
open file: .../learning_ros/Part_1/minimal_nodes/minimal_publisher.cpp
save to directory: ros_ws/src/ros_class/rosclass_minimal_nodes/src/minimal_publisher.cpp

gedit CMakeLists.txt (is better than netbeans for this type of file)
add:
cs_add_executable(rc_minimal_publisher src/minimal_publisher.cpp)
in any terminal (e.g. ctl-shift-t or file-> open tab)
roscd
catkin_make

in a terminal, start a roscore:
roscore

in another terminal, run the new pgm:
rosrun rosclass_minimal_nodes rc_minimal_publisher

in another terminal:
rostopic list
rostopic info topic1
rosmsg show std_msgs/Float64
rostopic echo topic1
rostopic hz topic1
see performance meter

open:
.../learning_ros/Part_1/minimal_nodes/sleepy_minimal_publisher.cpp
save in: ros_ws/src/ros_class/rosclass_minimal_nodes/src/sleepy_minimal_publisher.cpp
in CMakeLists.txt, add line:
cs_add_executable(rc_sleepy_minimal_publisher src/sleepy_minimal_publisher.cpp)
roscd
catkin_make
rosrun rosclass_minimal_nodes rc_sleepy_minimal_publisher
rostopic echo topic1
rostopic hz topic1
see performance meter

------minimal_subscriber--------
edit .../learning_ros/Part_1/minimal_nodes/minimal_subscriber.cpp
save as: ros_ws/src/ros_class/rosclass_minimal_nodes/src/minimal_subscriber.cpp
CMakeLists.txt:
cs_add_executable(rc_minimal_subscriber src/minimal_subscriber.cpp)
catkin_make

rosrun rosclass_minimal_nodes rc_minimal_subscriber
(see behavior w/ and w/o minimal publisher running)

rostopic pub -r 1 topic1 std_msgs/Float64 1.23

rosnode list
rosnode info minimal_subscriber
rqt_graph

----launch file----
edit .../learning_ros/Part_1/minimal_nodes/launch/minimal_nodes.launch
save as: ros_ws/src/ros_class/rosclass_minimal_nodes/launch/minimal_nodes.launch
edit package name (rosclass_minimal_nodes) and executable name (rc_sleepy_minimal_publisher, etc)
kill running nodes
roslaunch rosclass_minimal_nodes minimal_nodes.launch
rqt_console

----rosbag----
rosbag record topic1
restart minimal subscriber
rosbag play fname.bag
rqt_console

---minimal simulator---
edit minimal_simulator.cpp and minimal_controller.cpp; save in rosclass_minimal_nodes/src
edit CMakeLists.txt:
cs_add_executable(rc_minimal_simulator src/minimal_simulator.cpp)
cs_add_executable(rc_minimal_controller src/minimal_controller.cpp)
catkin_make
rosrun rosclass_minimal_nodes rc_minimal_simulator
rostopic pub -r 10 force_cmd std_msgs/Float64 0.1
rqt_plot
kill publisher
rosrun rosclass_minimal_nodes rc_minimal_controller
rostopic pub -r 10 vel_cmd std_msgs/Float64 1.0

-------------end CH1----------
----------CH2--------
*custom messages
from ros_class directory,
cs_create_pkg example_ros_msg roscpp std_msgs
open .../learning_ros/Part_1/example_ros_msg/msg/ExampleMessage.msg
save in: ...ros_class/example_ros_msg/msg/ExampleMessage.msg
in package.xml, uncomment lines:
<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>
catkin_make
rosmsg show example_ros_msg/ExampleMessage

open .../learning_ros/Part_1/example_ros_msg/src/example_ros_message_publisher.cpp
save in ...ros_class/example_ros_msg/src/example_ros_message_publisher.cpp
edit CMakeLists.txt; add line:
cs_add_executable(rc_example_ros_message_publisher src/example_ros_message_publisher.cpp)
catkin_make
rosrun example_ros_msg rc_example_ros_message_publisher (with roscore running)
rostopic echo example_topic

services:
from ros_class:
cs_create_pkg example_ros_service roscpp std_msgs nav_msgs geometry_msgs
open and save under .../ros_class/example_ros_service/src:
example_ros_service.cpp
example_ros_client.cpp
open and save under ../ros_class/example_ros_service/srv:
ExampleServiceMsg.srv
edit package.xml; uncomment:
<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>

edit CMakeLists.txt; add:
cs_add_executable(example_ros_service src/example_ros_service.cpp)
cs_add_executable(example_ros_client src/example_ros_client.cpp)
catkin_make
rosrun example_ros_service example_ros_service
rosservice list
rosservice info
rosservice call lookup_by_name 'Ted'
rosrun example_ros_service example_ros_client

classes: see example_ros_class (pass in node handle; odd syntax for callbacks)

rosrun example_ros_class example_ros_class
rosservice call example_minimal_service
rostopic pub -r 2 example_class_input_topic std_msgs/Float32 2.0

*main using a library:
rosrun creating_a_ros_library example_ros_class_test_main
(then test, as above)

libraries: creating_a_ros_library;
note CMakeLists.txt for adding a library
where to put header file (then use <pkg/header_name.h>)
*the parameter server
*creating packages and libraries

action servers: in ros_class dir, create pkg:
cs_create_pkg example_action_server roscpp actionlib
open and save under .../ros_class/example_action_server/action/demo.action
open and save under .../ros_class/example_action_server/src/example_action_server.cpp
open and save under .../ros_class/example_action_server/src/example_action_client.cpp
edit package.xml; uncomment:
<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>
CMakeLists.txt:
uncomment:
find_package(Boost REQUIRED COMPONENTS system thread)
add:
cs_add_executable(example_action_server src/example_action_server.cpp)
cs_add_executable(example_action_client src/example_action_client.cpp)
catkin_make

rosrun example_action_server example_action_server
rosrun example_action_server example_action_client

rosrun example_action_server example_countdown_server
rosrun example_action_server timer_client

Parameter server:
rosparam
rosparam set /gains "p: 1.0
i : 2.0
d : 3.0"
rosparam list
rosparam get /gains
from .../learning_ros/Part_1/example_parameter_server/launch:
rosparam load jnt1_gains.yaml
rosparam list
rosparam get jnt1_gains
rosparam delete jnt1_gains
rosparam list
(launch file option--would need to copy over package/directory)
example read_param_from_node: uses: if ( nh.getParam ("/joint1_gains/p", P_gain))


----请认真学习本书第六章
coordination commands:
Start up gazebo, add starting pen, tables and blocks, spawn baxter-on-mobot:
(optirun) `roslaunch baxter_variations baxter_on_mobot.launch`

Launch multiple nodes, including 6 action servers, 2 services, and rviz (including trajectory streamers,
cartesian planner, rviz, baxter-playfile, triad_display, object-grabber, object-finder and coordinator). Same
as coordinator for baxter on pedestal:
`roslaunch coordinator coord_vision_manip.launch`

Optionally, test with this example client of the coordinator:
`rosrun coordinator coordinator_action_client_tester`

Start up map server (with starting-pen map), amcl, and move_base with 4 nav config files. Nearly identical
to nav-launch in Part-4, except do not start up rviz (again):

`roslaunch baxter_variations mobot_startup_navstack.launch`

章节目录

第一节 ROS基础ROS简介:ROS工具和节点一些ROS概念写ROS节点一些更多的Ros工具:Catkin_Simple,Roslaunch,Rqt_Console和Rosbag一个最小的仿真器和控制器的例子使用包
消息,类和服务器定义自定义消息ROS服务介绍在ROS中使用C ++类在ROS中创建库模块操作服务器和操作客户端简介参数服务器简介使用包第二节 ROS中的仿真和可视化ROS仿真简单的二维机器人仿真器动态仿真建模统一机器人描述格式Gazebo介绍最小联合控制器使用Gazebo插件进行联合伺服控制构建移动机器人模型模拟移动机器人模型组合机器人模型使用包ROS中的坐标变换(TF)ROS的坐标变换简介转换监听器使用特征库转换ROS数据类型使用包ROS中的感知和可视化标记和互动标记在Rviz在Rviz中显示传感器值使用包第三节 在ROS中使用相机处理投影变换成相机坐标本机相机校准立体相机的内在校准使用Opencv与Ros使用包深度成像和点云扫描雷达的深度深度从立体相机深度相机使用包点云处理一个简单的点云显示节点从磁盘加载和显示点云图像将发布的点云图像保存到磁盘用PCL方法解释点云图像对象查找器第四节 ROS中的移动机器人移动机器人运动控制期望状态生成机器人状态估计差速驱动转向算法指导地图坐标使用包移动机器人导航地图制作路径规划移动基础客户端示例修改导航包使用包第五节 ROS中的机器人低级控制一维,棱镜 - 联合机器人模型示例位置控制器示例速度控制器示例力控制器机器人臂的轨迹信息用于7-Dof臂的轨迹插补动作服务器使用包机器人臂运动学正向运动学反向运动学使用包手臂运动规划笛卡尔运动规划联合空间规划动态规划笛卡尔运动动作服务器使用Baxter模拟器进行臂控制运行百特模拟器巴克斯特联合会议题目百特的夹爪头盘控制指挥巴克斯特接头使用ROS联合轨迹控制器联合空间记录和播放节点巴克斯特运动学百特笛卡尔移动使用包对象抓取包对象抓取代码组织对象操作查询服务通用抓爪服务对象抓取动作服务器示例对象抓取操作客户端使用包第六节 系统集成和高层管理基于感知的操纵外部相机校准综合感知和操纵移动操纵移动机器人模型移动操纵使用包结论
----
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: