Skip to content

Commit 0caa2aa

Browse files
authored
Merge pull request #3 from microsoft/fix/jackal_live
Jackal live launch file + dos2unix fixes
2 parents 08ad04b + 9b9826a commit 0caa2aa

File tree

3 files changed

+53
-67
lines changed

3 files changed

+53
-67
lines changed

README.md

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,38 @@
1-
# Microsoft's IROS 2020 workshop Demo 1
1+
# IROS 2020 Mixed Reality and Robotics Tutorial, Demo 1
22

33
Microsoft is hosting a workshop at the IROS 2020 conference on Mixed Reality and Robotics.
4-
This repository contains all the code required to run, build and deploy demo one.
4+
This repository contains all the code required to run, build and deploy Demo 1.
5+
The tutorial is available starting October 25th 2020 until November 25th 2020 at https://www.iros2020.org/.
56

6-
The Demo 1 aims to:
7+
Demo 1 aims to:
78
- Highlight how the robotic community can benefit from Mixed Reality
89
- Show some features of the HoloLens 2, Azure Spatial Anchors, and other products, services & tools from the Mixed Reality ecosystem.
910
- Serve as a playground and starting point for researchers to use Mixed Reality with their own robots
1011

1112
The demo application allows you to command a simulated or real Clearpath Jackal robot and an industrial robot arm attached to it in MR. There are multiple control modes available. This repo also contains Dockerfiles to build and run the Jackal simulation and navigation stack.
1213

13-
# [Here you can find the Wiki](https://github.com/microsoft/mixed-reality-robot-interaction-demo/wiki)
14-
The wiki contains detailed instructions on how to run, build and deploy the demo apps and also links to our talks and tutorial videos, which accompany this repository.
14+
# Instructions
15+
**Please see [the Wiki](https://github.com/microsoft/mixed-reality-robot-interaction-demo/wiki) for detailed instructions**.
16+
The wiki contains detailed instructions on how to run, build and deploy the demo apps. The videos accompanying this repository are currently available through [IROS2020](https://www.iros2020.org/).
1517

1618
# Support
1719
If you have questions or issues while working with this repository, please open an issue [here](https://github.com/microsoft/mixed-reality-robot-interaction-demo/issues).
1820

19-
2021
## Contributing
21-
22-
23-
2422
This project welcomes contributions and suggestions. Most contributions require you to agree to a
2523
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
2624
the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
2725

28-
29-
3026
When you submit a pull request, a CLA bot will automatically determine whether you need to provide
3127
a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions
3228
provided by the bot. You will only need to do this once across all repos using our CLA.
3329

34-
35-
3630
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
3731
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
3832
contact [[email protected]](mailto:[email protected]) with any additional questions or comments.
3933

40-
41-
4234
## Trademarks
43-
44-
45-
4635
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft
47-
trademarks or logos is subject to and must follow
48-
[Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).
36+
trademarks or logos is subject to and must follow [Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).
4937
Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
5038
Any use of third-party trademarks or logos are subject to those third-party's policies.
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,35 @@
11
<launch>
2-
<!-- Velodyne + Camera -->
3-
<include file="$(find ms_jackal_startup)/launch/velodyne.launch">
4-
</include>
5-
2+
<!-- Intel Realsense drivers with image undistortion for Azure Spatial Anchors -->
63
<include file="$(find asa_ros)/launch/intel_t265.launch" >
74
</include>
85

6+
<!-- Extrinsic calibration for the Realsense. -->
97
<node pkg="tf" type="static_transform_publisher" name="realsense_mount_tf" args="0 0 0 0 0 0 1 realsense_mount_link camera_pose_frame 100" />
108

9+
<!-- Simple republishing script to publish information from /tf as geometry_msgs/TransfromStamped. -->
1110
<node pkg="ms_jackal_demo" type="tf_transform.py" name="tf_transform">
1211
<param name="parent_frame" value="anchor_rot" />
1312
<param name="child_frame" value="odom" />
1413
</node>
1514

15+
<!-- ROS -> Unity coordinate frame conversion. -->
1616
<node pkg="tf" type="static_transform_publisher" name="anchor_tf" args="0 0 0 -0.5 0.5 0.5 0.5 anchor anchor_rot 100" />
1717

18-
<!-- ASA -->
18+
<!-- Azure Spatial Anchors -->
1919
<include file="$(find asa_ros)/launch/asa_ros.launch">
2020
<arg name="anchor_id" value="3ca83875-1700-4ad2-90fc-62a0759d77fe" />
2121
<arg name="anchor_frame_id" value="anchor" />
2222
</include>
23-
24-
<!-- Slam Gmapping -->
23+
24+
<!-- Slam Gmapping from the laser scanner. -->
2525
<arg name="scan_topic" default="$(eval optenv('JACKAL_LASER_TOPIC', 'front/scan'))" />
2626
<include file="$(find jackal_navigation)/launch/include/gmapping.launch">
2727
<arg name="scan_topic" value="$(arg scan_topic)" />
2828
</include>
2929

30-
<!--- Run Move Base -->
30+
<!--- Navigation -->
3131
<include file="$(find jackal_navigation)/launch/include/move_base.launch" />
3232

3333
<!-- Run the webserver for communication with other devices -->
34-
<rosparam param="/rosbridge_websocket/capability_group">Visualization</rosparam>
35-
<rosparam param="/rosapi/capability_group">Visualization</rosparam>
3634
<include file="$(find rosbridge_server)/launch/rosbridge_websocket.launch" />
3735
</launch>
Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,37 @@
1-
#!/usr/bin/env python
2-
import rospy
3-
from geometry_msgs.msg import TransformStamped
4-
import tf2_ros
5-
6-
def tf_transform_publisher():
7-
rospy.init_node('tf_transform_publisher', anonymous=False)
8-
9-
# TF interface
10-
tf_buffer = tf2_ros.Buffer()
11-
tf_listener = tf2_ros.TransformListener(tf_buffer)
12-
13-
# Publishers and subscribers
14-
pub = rospy.Publisher('transform_output', TransformStamped, queue_size=1, latch=True)
15-
16-
# ROS params
17-
parent_frame = rospy.get_param('~parent_frame', 'anchor')
18-
child_frame = rospy.get_param('~child_frame', 'odom')
19-
update_rate = rospy.get_param('~update_rate', 10.0)
20-
21-
rate = rospy.Rate(update_rate)
22-
while not rospy.is_shutdown():
23-
try:
24-
# Will get the latest transform
25-
trans = tf_buffer.lookup_transform(parent_frame, child_frame, rospy.Time())
26-
except (tf2_ros.LookupException, tf2_ros.ConnectivityException, tf2_ros.ExtrapolationException):
27-
# Just wait if we can't look up the transform.
28-
rate.sleep()
29-
continue
30-
pub.publish(trans)
31-
rate.sleep()
32-
33-
if __name__ == '__main__':
34-
try:
35-
tf_transform_publisher()
36-
except rospy.ROSInterruptException:
37-
pass
1+
#!/usr/bin/env python
2+
import rospy
3+
from geometry_msgs.msg import TransformStamped
4+
import tf2_ros
5+
6+
def tf_transform_publisher():
7+
rospy.init_node('tf_transform_publisher', anonymous=False)
8+
9+
# TF interface
10+
tf_buffer = tf2_ros.Buffer()
11+
tf_listener = tf2_ros.TransformListener(tf_buffer)
12+
13+
# Publishers and subscribers
14+
pub = rospy.Publisher('transform_output', TransformStamped, queue_size=1, latch=True)
15+
16+
# ROS params
17+
parent_frame = rospy.get_param('~parent_frame', 'anchor')
18+
child_frame = rospy.get_param('~child_frame', 'odom')
19+
update_rate = rospy.get_param('~update_rate', 10.0)
20+
21+
rate = rospy.Rate(update_rate)
22+
while not rospy.is_shutdown():
23+
try:
24+
# Will get the latest transform
25+
trans = tf_buffer.lookup_transform(parent_frame, child_frame, rospy.Time())
26+
except (tf2_ros.LookupException, tf2_ros.ConnectivityException, tf2_ros.ExtrapolationException):
27+
# Just wait if we can't look up the transform.
28+
rate.sleep()
29+
continue
30+
pub.publish(trans)
31+
rate.sleep()
32+
33+
if __name__ == '__main__':
34+
try:
35+
tf_transform_publisher()
36+
except rospy.ROSInterruptException:
37+
pass

0 commit comments

Comments
 (0)