Skip to content

Commit 134e3a3

Browse files
authored
Merge pull request #218 from NOSALRO/issue_211
Python cameras example fixes
2 parents 4bf9753 + db6a1f0 commit 134e3a3

File tree

5 files changed

+51
-33
lines changed

5 files changed

+51
-33
lines changed

docs/faq/index.html

+9-8
Original file line numberDiff line numberDiff line change
@@ -1995,10 +1995,11 @@ <h2 id="how-can-i-attach-a-camera-to-a-moving-link"><strong>How can I attach a c
19951995
</div>
19961996
<div class="tabbed-block">
19971997
<div class="highlight"><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a><span class="n">tf</span> <span class="o">=</span> <span class="n">dartpy</span><span class="o">.</span><span class="n">math</span><span class="o">.</span><span class="n">Isometry3</span><span class="p">()</span>
1998-
<a id="__codelineno-23-2" name="__codelineno-23-2" href="#__codelineno-23-2"></a><span class="n">rot</span> <span class="o">=</span> <span class="n">dartpy</span><span class="o">.</span><span class="n">math</span><span class="o">.</span><span class="n">AngleAxis</span><span class="p">(</span><span class="mf">3.14</span><span class="p">,</span> <span class="p">[</span><span class="mf">1.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">])</span>
1999-
<a id="__codelineno-23-3" name="__codelineno-23-3" href="#__codelineno-23-3"></a><span class="n">rot</span> <span class="o">=</span> <span class="n">rot</span><span class="o">.</span><span class="n">multiply</span><span class="p">(</span> <span class="n">dartpy</span><span class="o">.</span><span class="n">math</span><span class="o">.</span><span class="n">AngleAxis</span><span class="p">(</span><span class="mf">1.57</span><span class="p">,</span> <span class="p">[</span><span class="mf">0.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">1.</span><span class="p">]))</span><span class="o">.</span><span class="n">to_rotation_matrix</span><span class="p">()</span>
1998+
<a id="__codelineno-23-2" name="__codelineno-23-2" href="#__codelineno-23-2"></a><span class="n">rot</span> <span class="o">=</span> <span class="n">dartpy</span><span class="o">.</span><span class="n">math</span><span class="o">.</span><span class="n">AngleAxis</span><span class="p">(</span><span class="mf">3.14</span><span class="p">,</span> <span class="p">[</span><span class="mf">1.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">])</span>
1999+
<a id="__codelineno-23-3" name="__codelineno-23-3" href="#__codelineno-23-3"></a><span class="n">rot</span> <span class="o">=</span> <span class="n">rot</span><span class="o">.</span><span class="n">multiply</span><span class="p">(</span><span class="n">dartpy</span><span class="o">.</span><span class="n">math</span><span class="o">.</span><span class="n">AngleAxis</span><span class="p">(</span><span class="mf">1.57</span><span class="p">,</span> <span class="p">[</span><span class="mf">0.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">1.</span><span class="p">]))</span><span class="o">.</span><span class="n">to_rotation_matrix</span><span class="p">()</span>
20002000
<a id="__codelineno-23-4" name="__codelineno-23-4" href="#__codelineno-23-4"></a><span class="n">tf</span><span class="o">.</span><span class="n">set_translation</span><span class="p">([</span><span class="mf">0.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">0.1</span><span class="p">])</span>
2001-
<a id="__codelineno-23-5" name="__codelineno-23-5" href="#__codelineno-23-5"></a><span class="n">camera</span><span class="o">.</span><span class="n">attach_to_body</span><span class="p">(</span><span class="n">robot</span><span class="o">.</span><span class="n">body_node</span><span class="p">(</span><span class="s2">&quot;iiwa_link_ee&quot;</span><span class="p">),</span> <span class="n">tf</span><span class="p">)</span> <span class="c1"># cameras are looking towards -z by default</span>
2001+
<a id="__codelineno-23-5" name="__codelineno-23-5" href="#__codelineno-23-5"></a><span class="n">tf</span><span class="o">.</span><span class="n">set_rotation</span><span class="p">(</span><span class="n">rot</span><span class="p">)</span>
2002+
<a id="__codelineno-23-6" name="__codelineno-23-6" href="#__codelineno-23-6"></a><span class="n">camera</span><span class="o">.</span><span class="n">attach_to_body</span><span class="p">(</span><span class="n">robot</span><span class="o">.</span><span class="n">body_node</span><span class="p">(</span><span class="s2">&quot;iiwa_link_ee&quot;</span><span class="p">),</span> <span class="n">tf</span><span class="p">)</span> <span class="c1"># cameras are looking towards -z by default</span>
20022003
</code></pre></div>
20032004
</div>
20042005
</div>
@@ -2034,11 +2035,11 @@ <h2 id="how-can-i-manipulate-the-camera-object"><strong>How can I manipulate the
20342035
</code></pre></div>
20352036
</div>
20362037
<div class="tabbed-block">
2037-
<div class="highlight"><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a><span class="n">camera</span><span class="o">.</span><span class="n">camera</span><span class="p">()</span><span class="o">.</span><span class="n">set_camera_params</span><span class="p">(</span><span class="mf">5.</span><span class="p">,</span> <span class="c1">#far plane</span>
2038-
<a id="__codelineno-27-2" name="__codelineno-27-2" href="#__codelineno-27-2"></a> <span class="mf">0.01</span><span class="p">,</span> <span class="c1">#near plane</span>
2039-
<a id="__codelineno-27-3" name="__codelineno-27-3" href="#__codelineno-27-3"></a> <span class="mf">60.0</span><span class="p">,</span> <span class="c1"># field of view</span>
2040-
<a id="__codelineno-27-4" name="__codelineno-27-4" href="#__codelineno-27-4"></a> <span class="mi">600</span><span class="p">,</span> <span class="c1"># width</span>
2041-
<a id="__codelineno-27-5" name="__codelineno-27-5" href="#__codelineno-27-5"></a> <span class="mi">400</span><span class="p">)</span> <span class="c1">#height</span>
2038+
<div class="highlight"><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a><span class="n">camera</span><span class="o">.</span><span class="n">camera</span><span class="p">()</span><span class="o">.</span><span class="n">set_camera_params</span><span class="p">(</span><span class="mf">5.</span><span class="p">,</span> <span class="c1"># far plane</span>
2039+
<a id="__codelineno-27-2" name="__codelineno-27-2" href="#__codelineno-27-2"></a> <span class="mf">0.01</span><span class="p">,</span> <span class="c1"># near plane</span>
2040+
<a id="__codelineno-27-3" name="__codelineno-27-3" href="#__codelineno-27-3"></a> <span class="mf">60.0</span><span class="p">,</span> <span class="c1"># field of view</span>
2041+
<a id="__codelineno-27-4" name="__codelineno-27-4" href="#__codelineno-27-4"></a> <span class="mi">600</span><span class="p">,</span> <span class="c1"># width</span>
2042+
<a id="__codelineno-27-5" name="__codelineno-27-5" href="#__codelineno-27-5"></a> <span class="mi">400</span><span class="p">)</span> <span class="c1"># height</span>
20422043
</code></pre></div>
20432044
</div>
20442045
</div>

docs/search/search_index.json

+1-1
Large diffs are not rendered by default.

src/docs/include/macros.py

+1-1
Large diffs are not rendered by default.

src/examples/cameras.cpp

+9-2
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,15 @@ int main()
9292
tf.translation() = Eigen::Vector3d(0., 0., 0.1);
9393
camera->attach_to_body(robot->body_node("iiwa_link_ee"), tf); // cameras are looking towards -z by default
9494
// @CAM_ATTACH_END@
95-
96-
simu.add_checkerboard_floor(10.);
95+
// the default checkerboard floor values are the following:
96+
// double floor_width = 10.0
97+
// double floor_height = 0.1
98+
// double size = 1.
99+
// const Eigen::Isometry3d& tf = Eigen::Isometry3d::Identity()
100+
// const std::string& floor_name = "checkerboard_floor"
101+
// const Eigen::Vector4d& first_color = dart::Color::White(1.)
102+
// const Eigen::Vector4d& second_color = dart::Color::Gray(1.))
103+
simu.add_checkerboard_floor();
97104
simu.add_robot(robot);
98105
Eigen::Vector6d pose;
99106
pose << 0., 0., 0., 1.5, 0., 0.25;

src/examples/python/cameras.py

+31-21
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import dartpy
44
robot = rd.Iiwa()
55

6-
ctrl = [-0.3, np.pi/3, 0.2, -np.pi, 4., 0., 0., -0.6]
6+
ctrl = [-0.3, np.pi / 3., 0.2, -np.pi / 4., 0., 0., -0.6]
77
controller = rd.PDControl(ctrl)
88
robot.add_controller(controller)
99
controller.set_pd(500., 50.)
@@ -37,14 +37,14 @@
3737
# @MANIPULATE_CAM_PYTHON_SEP_END@
3838

3939
# @MANIPULATE_CAM_PYTHON@
40-
camera.camera().set_camera_params(5., #far plane
41-
0.01, #near plane
42-
60.0, # field of view
43-
600, # width
44-
400) #height
40+
camera.camera().set_camera_params(5., # far plane
41+
0.01, # near plane
42+
60.0, # field of view
43+
600, # width
44+
400) # height
4545
# @MANIPULATE_CAM_PYTHON_END@
4646

47-
camera.camera().record(True, True) # cameras are recording color images by default, enable depth images as well for this example
47+
camera.camera().record(True, True) # cameras are recording color images by default, enable depth images as well for this example
4848

4949
# @RECORD_VIDEO_CAMERA_PYTHON@
5050

@@ -61,19 +61,27 @@
6161

6262
# @CAM_ATTACH_PYTHON@
6363
tf = dartpy.math.Isometry3()
64-
rot = dartpy.math.AngleAxis(3.14, [1., 0., 0.])
65-
rot = rot.multiply( dartpy.math.AngleAxis(1.57, [0., 0., 1.])).to_rotation_matrix()
64+
rot = dartpy.math.AngleAxis(3.14, [1., 0., 0.])
65+
rot = rot.multiply(dartpy.math.AngleAxis(1.57, [0., 0., 1.])).to_rotation_matrix()
6666
tf.set_translation([0., 0., 0.1])
67-
camera.attach_to_body(robot.body_node("iiwa_link_ee"), tf) # cameras are looking towards -z by default
67+
tf.set_rotation(rot)
68+
camera.attach_to_body(robot.body_node("iiwa_link_ee"), tf) # cameras are looking towards -z by default
6869
# @CAM_ATTACH_PYTHON_END@
69-
70-
simu.add_checkerboard_floor(10.)
70+
# the default checkerboard floor values are the following:
71+
# floor_width = 10.0
72+
# floor_height = 0.1,
73+
# size = 1.,
74+
# tf = dartpy.math.Isometry3.Identity() (transformation matrix of the floor)
75+
# floor_name = "checkerboard_floor",
76+
# first_color = magnum.Color3(0, 0, 0),
77+
# second_color = magnum.Color3(128, 128, 128)
78+
simu.add_checkerboard_floor()
7179
simu.add_robot(robot)
7280

7381

74-
pose = [ 0., 0., 0., 1.5, 0., 0.25]
82+
pose = [0., 0., 0., 1.5, 0., 0.25]
7583
simu.add_robot(rd.Robot.create_box([0.1, 0.1, 0.5], pose, "free", 1., [1, 0, 0, 1], "box"))
76-
pose = [ 0., 0., 0., 1.5, -0.5, 0.25]
84+
pose = [0., 0., 0., 1.5, -0.5, 0.25]
7785
simu.add_robot(rd.Robot.create_ellipsoid([0.2, 0.2, 0.2], pose, "free", 1., [1, 0, 0, 1], "sphere"))
7886
simu.add_sensor(camera)
7987

@@ -99,12 +107,13 @@
99107

100108
depth_image = camera.depth_array()
101109

102-
small_box = rd.Robot.create_box([0.01, 0.01, 0.01], np.zeros(6), "fixed", 1., [0,0,1,1], "box_pc")
103-
point_cloud = rd.gui.point_cloud_from_depth_array(depth_image, camera.camera_intrinsic_matrix(), camera.camera_extrinsic_matrix(), camera.camera().far_plane())
110+
small_box = rd.Robot.create_box([0.01, 0.01, 0.01], np.zeros(6), "fixed", 1., [0, 0, 1, 1], "box_pc")
111+
point_cloud = rd.gui.point_cloud_from_depth_array(
112+
depth_image, camera.camera_intrinsic_matrix(), camera.camera_extrinsic_matrix(), camera.camera().far_plane())
104113
for i in range(len(point_cloud)):
105-
if (i % 30 == 0): # do not display all the points in the cloud
106-
pose = 0., 0., 0., point_cloud[i]
107-
bbox = small_box.clone_ghost("box_" + str(i), [0, 0, 1,1])
114+
if (i % 30 == 0): # do not display all the points in the cloud
115+
pose = 0., 0., 0., point_cloud[i]
116+
bbox = small_box.clone_ghost("box_" + str(i), [0, 0, 1, 1])
108117
bbox.set_base_pose(pose)
109118
bbox.set_cast_shadows(False)
110119
simu.add_robot(bbox)
@@ -118,8 +127,9 @@
118127
break
119128
if (simu.schedule(simu.graphics_freq())):
120129
depth_image = camera.depth_array()
121-
point_cloud = rd.gui.point_cloud_from_depth_array(depth_image, camera.camera_intrinsic_matrix(), camera.camera_extrinsic_matrix(), camera.camera().far_plane())
122-
print( simu.scheduler().current_time(), ": ", len(point_cloud))
130+
point_cloud = rd.gui.point_cloud_from_depth_array(
131+
depth_image, camera.camera_intrinsic_matrix(), camera.camera_extrinsic_matrix(), camera.camera().far_plane())
132+
print(simu.scheduler().current_time(), ": ", len(point_cloud))
123133

124134

125135
robot.reset()

0 commit comments

Comments
 (0)