tag:blogger.com,1999:blog-168759662024-03-13T08:28:14.665-07:00Tech Art BlogTechnical art projects by Thomas Edwardst11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.comBlogger271125tag:blogger.com,1999:blog-16875966.post-40852880898594032362022-12-16T19:48:00.004-08:002022-12-16T19:53:57.826-08:00<p>A while back, I built Chaney Electronics C6981 geiger counter kit, which uses the SBM-20 tube. I had nothing hotter than my granite counter-top to test with (which was maybe 200% of background radiation). Then I saw the Radioactive Drew YouTube episode "<a href="https://www.youtube.com/watch?v=Ltj4vcgypnE">Uranium Tiles on Pasadena Sidewalk</a>", and I knew I had to take my son out there to test it. It's hot alright!</p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='497' height='413' src='https://www.blogger.com/video.g?token=AD6v5dwYGS87yGB-HAYgyK7MXn7RXa7MNwnzsHcRd7ZSBC8s7PQgGMAzVtu4EDkZeGrgyc-oMPhX_THoJ0Y' class='b-hbp-video b-uploaded' frameborder='0'></iframe></div><div class="separator" style="clear: both; text-align: center;"><br /></div>Here is the geiger counter:<br /><br /><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje9mG1O1mBwZ1GlNOtmhk2y_gAYnxtFpUI2McyDyTcTlMxr8rq4HljzdrnhdVURf9XXwAuEJv2MpQPbpXapkzzc5kAqQH60GUXZMgURGX0bE2U0WFTCNB6D2Drlz_UurabVnj0RocEb5M0MEjZX2HiCZUT5A5ba-mtJoByvSR1ApNK0YhzJcM/s2592/photo.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2592" data-original-width="1936" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje9mG1O1mBwZ1GlNOtmhk2y_gAYnxtFpUI2McyDyTcTlMxr8rq4HljzdrnhdVURf9XXwAuEJv2MpQPbpXapkzzc5kAqQH60GUXZMgURGX0bE2U0WFTCNB6D2Drlz_UurabVnj0RocEb5M0MEjZX2HiCZUT5A5ba-mtJoByvSR1ApNK0YhzJcM/s320/photo.JPG" width="239" /></a></div><br />t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-9358239979698523262021-03-24T19:30:00.001-07:002021-03-24T19:30:12.323-07:00Punched Card<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-ridjMMb32es/YFv1qIZdOoI/AAAAAAAAGcQ/NHZqAXl6dWE66xGh4ayyAUUGMhNOf4bogCNcBGAsYHQ/s1916/supercard.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="856" data-original-width="1916" src="https://1.bp.blogspot.com/-ridjMMb32es/YFv1qIZdOoI/AAAAAAAAGcQ/NHZqAXl6dWE66xGh4ayyAUUGMhNOf4bogCNcBGAsYHQ/s320/supercard.jpg" width="320" /></a></div><br /> <p></p>t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-20109344249139906522020-05-17T15:44:00.001-07:002020-05-17T15:57:25.397-07:00SculptrVR to Roblox Workflow<a href="http://www.sculptrvr.com/" target="_blank">SculptrVR</a> is a fun, free-form VR sculpture program. After my son made a cool design in the app, I extracted the .obj mesh from the Oculus Quest (<a href="http://techartblog.blogspot.com/2020/05/sculptrvr-to-3d-print-workflow.html" target="_blank">see this post for all the details</a>). Besides 3D printing it, I also wanted to be able to bring it into a Roblox level so he can play on it.<br />
<br />
A few things I learned about this process:<br />
<br />
First, you need an "adult" Roblox account to make "mesh objects" in Roblox Studio. I guess they are afraid of the kinds of meshes kids might upload? Weird.<br />
<br />
Second, you can import .obj files into Roblox Studio, but I suggest the following workflow in <a href="http://www.meshlab.net/" target="_blank">Mesh Lab</a> to do some processing on the mesh so it works well in Roblox Studio.<br />
<br />
<b>1)</b> Load the .obj file into MeshLab<br />
<br />
<b>2)</b> Roblox Studio has a limit of 10,000 faces on MeshParts:<br />
<br />
<a href="http://1.bp.blogspot.com/-fP8vsSOYT1Y/XsG7glnb02I/AAAAAAAAF_w/05T3AR9V_Y8F7v3B48pj48ymO7pdIAulQCK4BGAYYCw/s1600/Screen%2BShot%2B2020-05-17%2Bat%2B3.32.20%2BPM.png" imageanchor="1"><img border="0" height="155" src="https://1.bp.blogspot.com/-fP8vsSOYT1Y/XsG7glnb02I/AAAAAAAAF_w/05T3AR9V_Y8F7v3B48pj48ymO7pdIAulQCK4BGAYYCw/s400/Screen%2BShot%2B2020-05-17%2Bat%2B3.32.20%2BPM.png" width="400" /></a><br />
<br />
So if you have more than 10,000 faces in your mesh, in MeshLab use "Filters/Remeshing, Simplification and Reconstruction/Simplification: Quadratic Edge Collapse Decimation" to reduce the number of faces:<br />
<br />
<a href="http://1.bp.blogspot.com/-dVBxkPkuhuA/XsGihUiIGEI/AAAAAAAAF8c/_yXdz58f8nYxEcZL5Ai9zdhKwIVgubgAQCK4BGAYYCw/s1600/Screen%2BShot%2B2020-05-17%2Bat%2B1.45.16%2BPM.png" imageanchor="1"><img border="0" height="456" src="https://1.bp.blogspot.com/-dVBxkPkuhuA/XsGihUiIGEI/AAAAAAAAF8c/_yXdz58f8nYxEcZL5Ai9zdhKwIVgubgAQCK4BGAYYCw/s640/Screen%2BShot%2B2020-05-17%2Bat%2B1.45.16%2BPM.png" width="640" /></a><br />
<br />
You can target for 10,000 faces, but if you end up with more faces than 10,000 after the decimation, you may need to set a slightly lower target like 9,900:<br />
<br />
<a href="http://1.bp.blogspot.com/-x8Obt3WbnaM/XsGl-FfxSVI/AAAAAAAAF8o/JglGMPa5btwueb-rniu-lRk3zYwjs9JjgCK4BGAYYCw/s1600/Screen%2BShot%2B2020-05-17%2Bat%2B1.40.01%2BPM.png" imageanchor="1"><img border="0" height="400" src="https://1.bp.blogspot.com/-x8Obt3WbnaM/XsGl-FfxSVI/AAAAAAAAF8o/JglGMPa5btwueb-rniu-lRk3zYwjs9JjgCK4BGAYYCw/s400/Screen%2BShot%2B2020-05-17%2Bat%2B1.40.01%2BPM.png" width="316" /></a><br />
<br />
<b>3)</b> SculptrVR exports .obj meshes with vertex colors. However, Roblox Studio expects a mesh to have a texture image file instead. So you need to create the texture file from the .obj file you obtained from SculptrVR. There are two steps to do this. First use "Filters/Texture/Parameterization: Trivial Per-Triangle":<br />
<br />
<a href="http://1.bp.blogspot.com/-vVSA4jq_BWg/XsGtxRmocUI/AAAAAAAAF80/sQPX5DjtXV0Oe6Pka0dibEFzFUL9NYOnQCK4BGAYYCw/s1600/Screen%2BShot%2B2020-05-17%2Bat%2B2.13.34%2BPM.png" imageanchor="1"><img border="0" height="356" src="https://1.bp.blogspot.com/-vVSA4jq_BWg/XsGtxRmocUI/AAAAAAAAF80/sQPX5DjtXV0Oe6Pka0dibEFzFUL9NYOnQCK4BGAYYCw/s640/Screen%2BShot%2B2020-05-17%2Bat%2B2.13.34%2BPM.png" width="640" /></a><br />
<br />
What is "Parameterization"? It maps the space of the 3D triangular mesh onto a flat, 2D surface. The best explanation I've seen is from this slide from a <a href="http://www.math.tau.ac.il/~dcor/Graphics/adv-slides/remeshing.pdf" target="_blank">Tel Aviv University presentation</a>:<br />
<br />
<a href="http://4.bp.blogspot.com/-hrPr9qNWmzI/XsHAHZlLNxI/AAAAAAAAF_8/enu4W3Dldds8dgU28X46pFPJQHvYAEaRACK4BGAYYCw/s1600/p.jpg" imageanchor="1"><img border="0" height="483" src="https://4.bp.blogspot.com/-hrPr9qNWmzI/XsHAHZlLNxI/AAAAAAAAF_8/enu4W3Dldds8dgU28X46pFPJQHvYAEaRACK4BGAYYCw/s640/p.jpg" width="640" /></a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<b>4) </b>Now that there is a mapping from the triangular mesh to 2D, we need to carry the vertex colors to the 2D texture. Use "Filters/Texture/Transfer: Vertex Color to Texture":<br />
<br />
<a href="http://2.bp.blogspot.com/-py4cDBcvKDk/XsGxKIMS1kI/AAAAAAAAF9M/lDrrk9xSW0wjJWEP_BPef5WFPlAx0UixwCK4BGAYYCw/s1600/Screen%2BShot%2B2020-05-17%2Bat%2B2.48.02%2BPM.png" imageanchor="1"><img border="0" height="528" src="https://2.bp.blogspot.com/-py4cDBcvKDk/XsGxKIMS1kI/AAAAAAAAF9M/lDrrk9xSW0wjJWEP_BPef5WFPlAx0UixwCK4BGAYYCw/s640/Screen%2BShot%2B2020-05-17%2Bat%2B2.48.02%2BPM.png" width="640" /></a><br />
<br />
You must then name the texture file:<br />
<br />
<a href="http://3.bp.blogspot.com/-3pxWvZiyKIU/XsGzqsMdt2I/AAAAAAAAF9g/afOPEvIPhxwppQYT-vU-8jWi84oGENhfACK4BGAYYCw/s1600/Screen%2BShot%2B2020-05-17%2Bat%2B2.58.42%2BPM.png" imageanchor="1"><img border="0" height="320" src="https://3.bp.blogspot.com/-3pxWvZiyKIU/XsGzqsMdt2I/AAAAAAAAF9g/afOPEvIPhxwppQYT-vU-8jWi84oGENhfACK4BGAYYCw/s320/Screen%2BShot%2B2020-05-17%2Bat%2B2.58.42%2BPM.png" width="310" /></a><br />
<br />
The texture file is a .png. It will look like a lot of colored triangles:<br />
<br />
<a href="http://3.bp.blogspot.com/-wCKr8ReYJDQ/XsG6Iofd3OI/AAAAAAAAF_g/6T7FnnMee8oaIsuXDyKP38Biqu4OkJWQwCK4BGAYYCw/s1600/sculptrvr_tex.png" imageanchor="1"><img border="0" height="320" src="https://3.bp.blogspot.com/-wCKr8ReYJDQ/XsG6Iofd3OI/AAAAAAAAF_g/6T7FnnMee8oaIsuXDyKP38Biqu4OkJWQwCK4BGAYYCw/s320/sculptrvr_tex.png" width="320" /></a><br />
<br />
<b>5)</b> Now export the processed .obj file from Mesh Lab, and make sure that it references the texture file:<br />
<br />
<a href="http://2.bp.blogspot.com/-W8vCNtqJxoc/XsG0IqqgQOI/AAAAAAAAF9w/STX6FQ0B24867QGZ8YnV4k5A77941rTewCK4BGAYYCw/s1600/Screen%2BShot%2B2020-05-17%2Bat%2B3.00.16%2BPM.png" imageanchor="1"><img border="0" height="192" src="https://2.bp.blogspot.com/-W8vCNtqJxoc/XsG0IqqgQOI/AAAAAAAAF9w/STX6FQ0B24867QGZ8YnV4k5A77941rTewCK4BGAYYCw/s400/Screen%2BShot%2B2020-05-17%2Bat%2B3.00.16%2BPM.png" width="400" /></a><br />
<br />
<a href="http://3.bp.blogspot.com/-9h-Q2n7r99s/XsHBSwYMv2I/AAAAAAAAGAI/DhSp_o6h8tEfCtDa73nKEBod_aaNa0ykACK4BGAYYCw/s1600/Screen%2BShot%2B2020-05-17%2Bat%2B3.56.56%2BPM.png" imageanchor="1"><img border="0" height="336" src="https://3.bp.blogspot.com/-9h-Q2n7r99s/XsHBSwYMv2I/AAAAAAAAGAI/DhSp_o6h8tEfCtDa73nKEBod_aaNa0ykACK4BGAYYCw/s640/Screen%2BShot%2B2020-05-17%2Bat%2B3.56.56%2BPM.png" width="640" /></a><br />
<br />
<b>6) </b>Now go into Roblox Studio. Right click or Command-I to insert an Object:<br />
<br />
<a href="http://4.bp.blogspot.com/-_hAIK_OU1yE/XsG3LAU8rNI/AAAAAAAAF-I/PoC8ct5LwL8eAGhx8F7fDr1h1-VLaVaIwCK4BGAYYCw/s1600/Screen%2BShot%2B2020-05-17%2Bat%2B3.01.56%2BPM.png" imageanchor="1"><img border="0" height="101" src="https://4.bp.blogspot.com/-_hAIK_OU1yE/XsG3LAU8rNI/AAAAAAAAF-I/PoC8ct5LwL8eAGhx8F7fDr1h1-VLaVaIwCK4BGAYYCw/s320/Screen%2BShot%2B2020-05-17%2Bat%2B3.01.56%2BPM.png" width="320" /></a><br />
<br />
And insert a "MeshPart":<br />
<br />
<a href="http://4.bp.blogspot.com/-qc5qmNStJ4s/XsG3xSyHCAI/AAAAAAAAF-U/Lk8ItU-_udIuQ1preyVTJCyfDr28MRolwCK4BGAYYCw/s1600/Screen%2BShot%2B2020-05-17%2Bat%2B3.14.46%2BPM.png" imageanchor="1"><img border="0" height="99" src="https://4.bp.blogspot.com/-qc5qmNStJ4s/XsG3xSyHCAI/AAAAAAAAF-U/Lk8ItU-_udIuQ1preyVTJCyfDr28MRolwCK4BGAYYCw/s320/Screen%2BShot%2B2020-05-17%2Bat%2B3.14.46%2BPM.png" width="320" /></a><br />
<br />
Select the generic MeshPart you inserted<br />
<br />
<a href="http://1.bp.blogspot.com/-JzrsiwLiTnM/XsG5YEgZFWI/AAAAAAAAF-g/sfwBETDBdBMcOHUSvEPkQ34j4KZNCge1gCK4BGAYYCw/s1600/Screen%2BShot%2B2020-05-17%2Bat%2B3.18.42%2BPM.png" imageanchor="1"><img border="0" height="211" src="https://1.bp.blogspot.com/-JzrsiwLiTnM/XsG5YEgZFWI/AAAAAAAAF-g/sfwBETDBdBMcOHUSvEPkQ34j4KZNCge1gCK4BGAYYCw/s320/Screen%2BShot%2B2020-05-17%2Bat%2B3.18.42%2BPM.png" width="320" /></a><br />
<br />
Then go to the Properties/MeshId and choose the .obj file you exported from MeshLab:<br />
<br />
<a href="http://3.bp.blogspot.com/-POM9DBUyPGI/XsG5qlBphbI/AAAAAAAAF-0/cMiho2SC-QMEN4ErXPO0lwb5YInC93rTQCK4BGAYYCw/s1600/Screen%2BShot%2B2020-05-17%2Bat%2B3.18.56%2BPM.png" imageanchor="1"><img border="0" height="300" src="https://3.bp.blogspot.com/-POM9DBUyPGI/XsG5qlBphbI/AAAAAAAAF-0/cMiho2SC-QMEN4ErXPO0lwb5YInC93rTQCK4BGAYYCw/s400/Screen%2BShot%2B2020-05-17%2Bat%2B3.18.56%2BPM.png" width="400" /></a><br />
<br />
You will get a couple of warnings, you can choose to say yes or no:<br />
<br />
<a href="http://1.bp.blogspot.com/-HNGP_rpsg0g/XsG51wA2-II/AAAAAAAAF-8/Oq6dJMmcE1EibG7aule8bTUxIPqt-9h1ACK4BGAYYCw/s1600/Screen%2BShot%2B2020-05-17%2Bat%2B3.19.35%2BPM.png" imageanchor="1"><img border="0" height="124" src="https://1.bp.blogspot.com/-HNGP_rpsg0g/XsG51wA2-II/AAAAAAAAF-8/Oq6dJMmcE1EibG7aule8bTUxIPqt-9h1ACK4BGAYYCw/s320/Screen%2BShot%2B2020-05-17%2Bat%2B3.19.35%2BPM.png" width="320" /></a> <a href="http://3.bp.blogspot.com/-vo02fWbWz5g/XsG53_ssDRI/AAAAAAAAF_I/KcCD4TKSTB44aaKc4XOE_72Osgv2qNx9QCK4BGAYYCw/s1600/Screen%2BShot%2B2020-05-17%2Bat%2B3.19.50%2BPM.png" imageanchor="1"><img border="0" height="121" src="https://3.bp.blogspot.com/-vo02fWbWz5g/XsG53_ssDRI/AAAAAAAAF_I/KcCD4TKSTB44aaKc4XOE_72Osgv2qNx9QCK4BGAYYCw/s320/Screen%2BShot%2B2020-05-17%2Bat%2B3.19.50%2BPM.png" width="320" /></a><br />
<br />
And at the end of that, Roblox Studio should import your .obj mesh and automatically load up the texture file as well:<br />
<br />
<a href="http://3.bp.blogspot.com/-LPYtfCCj18I/XsG6Cw-s2dI/AAAAAAAAF_U/pX1mwffg0_ALfLM_YHnhvWwQluU0gUU-gCK4BGAYYCw/s1600/Screen%2BShot%2B2020-05-17%2Bat%2B3.21.53%2BPM.png" imageanchor="1"><img border="0" height="400" src="https://3.bp.blogspot.com/-LPYtfCCj18I/XsG6Cw-s2dI/AAAAAAAAF_U/pX1mwffg0_ALfLM_YHnhvWwQluU0gUU-gCK4BGAYYCw/s400/Screen%2BShot%2B2020-05-17%2Bat%2B3.21.53%2BPM.png" width="382" /></a><br />
<br />
<br />
There you go!<br />
<br />
<br />
<br />t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-22735322038125200132020-05-16T13:50:00.000-07:002020-05-16T13:53:43.025-07:00SculptrVR to 3D Print Workflow<a href="http://www.sculptrvr.com/" target="_blank">SculptrVR</a> is a free-form 3D sculpting app for multiple VR platforms, including Oculus Quest, which I have.<br />
<br />
My son made a cool sculpture in SculptrVR, and I decided it would be neat to 3D print it. Here is what he made, photographed from within the app:<br />
<br />
<a href="http://1.bp.blogspot.com/-aYIQulpPFJ8/XsBIes0A06I/AAAAAAAAF6I/2Mt-kuCbg38Z-IM76bWRpiOBU5s64W9xQCK4BGAYYCw/s1600/202051163558_727.jpg" imageanchor="1"><img border="0" height="360" src="https://1.bp.blogspot.com/-aYIQulpPFJ8/XsBIes0A06I/AAAAAAAAF6I/2Mt-kuCbg38Z-IM76bWRpiOBU5s64W9xQCK4BGAYYCw/s640/202051163558_727.jpg" width="640" /></a><br />
<br />
To save a mesh in SculptrVR, go to your palette and click on the file folder icon (see red arrow):<br />
<br />
<a href="http://2.bp.blogspot.com/-nTLB7Ez7oco/XsBJRaICCQI/AAAAAAAAF6g/vVtWhFwl3RQvmM17uV80dA3o5JgN_jXLwCK4BGAYYCw/s1600/folder.jpg" imageanchor="1"><img border="0" height="346" src="https://2.bp.blogspot.com/-nTLB7Ez7oco/XsBJRaICCQI/AAAAAAAAF6g/vVtWhFwl3RQvmM17uV80dA3o5JgN_jXLwCK4BGAYYCw/s400/folder.jpg" width="400" /></a><br />
<br />
Hit "Save":<br />
<br />
<a href="http://1.bp.blogspot.com/-bGfLV_iA9H8/XsBSw_GbWBI/AAAAAAAAF8A/Zb4UX4IG6pIauvi25zVQKlDDwIjAP_omwCK4BGAYYCw/s1600/save.jpg" imageanchor="1"><img border="0" height="372" src="https://1.bp.blogspot.com/-bGfLV_iA9H8/XsBSw_GbWBI/AAAAAAAAF8A/Zb4UX4IG6pIauvi25zVQKlDDwIjAP_omwCK4BGAYYCw/s400/save.jpg" width="400" /></a><br />
<br />
Then click on "Export Mesh":<br />
<br />
<a href="http://2.bp.blogspot.com/-EFxMesKJXt4/XsBJnrdJ8xI/AAAAAAAAF6s/3EJvV6YmAPYi8R9h-uueEHetLCHNRdePwCK4BGAYYCw/s1600/export_mesh.jpg" imageanchor="1"><img border="0" height="400" src="https://2.bp.blogspot.com/-EFxMesKJXt4/XsBJnrdJ8xI/AAAAAAAAF6s/3EJvV6YmAPYi8R9h-uueEHetLCHNRdePwCK4BGAYYCw/s400/export_mesh.jpg" width="395" /></a><br />
<br />
When the export is done, you'll see this:<br />
<br />
<a href="http://2.bp.blogspot.com/-tAQXF83zAg0/XsBKB-ygQPI/AAAAAAAAF64/wv2jFMUcjfAxvjsm6MGe9R66cfRAxygfACK4BGAYYCw/s1600/export_done.jpg" imageanchor="1"><img border="0" height="205" src="https://2.bp.blogspot.com/-tAQXF83zAg0/XsBKB-ygQPI/AAAAAAAAF64/wv2jFMUcjfAxvjsm6MGe9R66cfRAxygfACK4BGAYYCw/s400/export_done.jpg" width="400" /></a><br />
<br />
As the instructions say, you'll need to reboot your Quest. With your headset on, hold the power button your headset down until you're prompted with a shut-down screen. Select Restart to reboot your Oculus Quest.<br />
<br />
Now you need to hook up to the Oculus Quest with a USB-C data cable. If you are like me and stuck with a USB-A laptop, I recommend the <a href="https://www.amazon.com/Juiced-Systems-USB-C-Power-Cable/dp/B07ZPRFSL8" target="_blank">Juiced Systems USB-C to USB-A 10 Gbps USB 3.2 Gen 2 Data Power Cable</a>. That one worked for me. If you have a Mac, you will need to download the <a href="https://www.android.com/filetransfer/" target="_blank">Android File Transfer</a> app. When you connect to the Quest, you will see a file directory like this one:<br />
<br />
<a href="http://2.bp.blogspot.com/-6VNMHmE7zCQ/XsBLqPUHTfI/AAAAAAAAF7E/rYqfmRUZAus9eG_Rjjj8w97AmGkn8CjDACK4BGAYYCw/s1600/Screen%2BShot%2B2020-05-03%2Bat%2B7.01.05%2BPM.png" imageanchor="1"><img border="0" height="320" src="https://2.bp.blogspot.com/-6VNMHmE7zCQ/XsBLqPUHTfI/AAAAAAAAF7E/rYqfmRUZAus9eG_Rjjj8w97AmGkn8CjDACK4BGAYYCw/s640/Screen%2BShot%2B2020-05-03%2Bat%2B7.01.05%2BPM.png" width="640" /></a><br />
<br />
Go into com.sculptrvrinc.sculptrvrapp/files/OBJExports, and your exported .obj mesh will be there. Transfer it over to your computer. At this point, you can look at it with <a href="http://www.meshlab.net/" target="_blank">MeshLab</a>:<br />
<br />
<a href="http://2.bp.blogspot.com/-0IFeZL7atoE/XsBOXkBt2qI/AAAAAAAAF7c/S3skLHePKpU4Qi5svYuPfxEjUqliby6ywCK4BGAYYCw/s1600/Screen%2BShot%2B2020-05-16%2Bat%2B1.33.54%2BPM.png" imageanchor="1"><img border="0" height="395" src="https://2.bp.blogspot.com/-0IFeZL7atoE/XsBOXkBt2qI/AAAAAAAAF7c/S3skLHePKpU4Qi5svYuPfxEjUqliby6ywCK4BGAYYCw/s400/Screen%2BShot%2B2020-05-16%2Bat%2B1.33.54%2BPM.png" width="400" /></a><br />
<br />
Also you can load it into <a href="https://ultimaker.com/software/ultimaker-cura" target="_blank">Ultimaker Cura</a>. Many meshes from SculptrVR are unlikely to be "manifold", but that doesn't seem to matter much in slicing and printing.<br />
<br />
<a href="http://2.bp.blogspot.com/-VSsf1TPruAA/XsBPfL33PxI/AAAAAAAAF7o/dpwxDbY68x8Fs5XDl1OgoDP3xX7sUfliACK4BGAYYCw/s1600/Screen%2BShot%2B2020-05-16%2Bat%2B1.38.58%2BPM.png" imageanchor="1"><img border="0" height="584" src="https://2.bp.blogspot.com/-VSsf1TPruAA/XsBPfL33PxI/AAAAAAAAF7o/dpwxDbY68x8Fs5XDl1OgoDP3xX7sUfliACK4BGAYYCw/s640/Screen%2BShot%2B2020-05-16%2Bat%2B1.38.58%2BPM.png" width="640" /></a><br />
<br />
Then just slice, and print...<br />
<br />
<a href="http://2.bp.blogspot.com/-tIwnTHEA458/XsBQsnyJztI/AAAAAAAAF70/_xkMIleQhZ8tD6l_f0bbOhTB83h-0tBMACK4BGAYYCw/s1600/IMG_4150.jpg" imageanchor="1"><img border="0" height="640" src="https://2.bp.blogspot.com/-tIwnTHEA458/XsBQsnyJztI/AAAAAAAAF70/_xkMIleQhZ8tD6l_f0bbOhTB83h-0tBMACK4BGAYYCw/s640/IMG_4150.jpg" width="484" /></a><br />
<br />
<br />
<br />t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-66406007398803254892018-08-22T09:24:00.003-07:002018-08-22T09:32:32.595-07:003D Printing a Roblox Character in Full Color with ShapewaysIf your kids loves <a href="https://web.roblox.com/home" target="_blank">Roblox</a>, they will be very excited for you to 3D color print their Roblox character! <br />
<br />
First, download and run Roblox Studio. You can work with a basic "Baseplate" template:<br />
<br />
<a href="http://1.bp.blogspot.com/-0li8kv9GjBY/W32FX0Vy6gI/AAAAAAAAFIs/BuXQZ2abGP8hlmrFSgX7rQR-j_ugHLk9wCK4BGAYYCw/s1600/Screen%2BShot%2B2018-08-22%2Bat%2B8.30.28%2BAM.png" imageanchor="1"><img border="0" height="320" src="https://1.bp.blogspot.com/-0li8kv9GjBY/W32FX0Vy6gI/AAAAAAAAFIs/BuXQZ2abGP8hlmrFSgX7rQR-j_ugHLk9wCK4BGAYYCw/s320/Screen%2BShot%2B2018-08-22%2Bat%2B8.30.28%2BAM.png" width="291" /></a><br />
<br />
Next, hit "Play":<br />
<br />
<a href="http://3.bp.blogspot.com/-L9LFT5uQxLo/W32FclC1z3I/AAAAAAAAFI0/r3w_kLW83Ig3iLqRcLSWg4qzSmNckmsYACK4BGAYYCw/s1600/Screen%2BShot%2B2018-08-22%2Bat%2B8.30.48%2BAM.png" imageanchor="1"><img border="0" src="https://3.bp.blogspot.com/-L9LFT5uQxLo/W32FclC1z3I/AAAAAAAAFI0/r3w_kLW83Ig3iLqRcLSWg4qzSmNckmsYACK4BGAYYCw/s400/Screen%2BShot%2B2018-08-22%2Bat%2B8.30.48%2BAM.png" /></a><br />
<br />
And your character will appear. Select your character on the explorer (I've grayed out the name):<br />
<br />
<a href="http://1.bp.blogspot.com/-HA_qxKydBr4/W32GZAUNEUI/AAAAAAAAFJQ/OsoI2BMG-sUifB7lQSoubIdwepmRIZyMACK4BGAYYCw/s1600/Screen%2BShot%2B2018-08-22%2Bat%2B8.32.14%2BAM.png" imageanchor="1"><img border="0" height="301" src="https://1.bp.blogspot.com/-HA_qxKydBr4/W32GZAUNEUI/AAAAAAAAFJQ/OsoI2BMG-sUifB7lQSoubIdwepmRIZyMACK4BGAYYCw/s400/Screen%2BShot%2B2018-08-22%2Bat%2B8.32.14%2BAM.png" width="400" /></a><br />
<br />
And open up the "Properties" list:<br />
<br />
<a href="http://1.bp.blogspot.com/-_eVc4fB70Cs/W32FrcqMV-I/AAAAAAAAFJA/w2ZmhTZxbpAXPWQSaHQ8eixU3UPI2ezQgCK4BGAYYCw/s1600/Screen%2BShot%2B2018-08-22%2Bat%2B8.31.54%2BAM.png" imageanchor="1"><img border="0" src="https://1.bp.blogspot.com/-_eVc4fB70Cs/W32FrcqMV-I/AAAAAAAAFJA/w2ZmhTZxbpAXPWQSaHQ8eixU3UPI2ezQgCK4BGAYYCw/s400/Screen%2BShot%2B2018-08-22%2Bat%2B8.31.54%2BAM.png" /></a><br />
<br />
Make sure your character is "Archivable":<br />
<br />
<a href="http://3.bp.blogspot.com/-1RAHM_xArIY/W32GsOUTu7I/AAAAAAAAFJc/PV04uNsUXnIBMd-AyAA0O7LgzyLJlpQdwCK4BGAYYCw/s1600/Screen%2BShot%2B2018-08-22%2Bat%2B8.32.36%2BAM.png" imageanchor="1"><img border="0" src="https://3.bp.blogspot.com/-1RAHM_xArIY/W32GsOUTu7I/AAAAAAAAFJc/PV04uNsUXnIBMd-AyAA0O7LgzyLJlpQdwCK4BGAYYCw/s400/Screen%2BShot%2B2018-08-22%2Bat%2B8.32.36%2BAM.png" /></a><br />
<br />
Now under the Workspace tab (<b><i>not the Players tab!</i></b>), right click on your character and "Copy":<br />
<br />
<a href="http://2.bp.blogspot.com/-nENFHX6UcYE/W32G9tIcd1I/AAAAAAAAFJo/56zj_j5IqCYx1l8ODl2q27gI4A0b3MhLwCK4BGAYYCw/s1600/Screen%2BShot%2B2018-08-22%2Bat%2B8.40.23%2BAM.png" imageanchor="1"><img border="0" height="379" src="https://2.bp.blogspot.com/-nENFHX6UcYE/W32G9tIcd1I/AAAAAAAAFJo/56zj_j5IqCYx1l8ODl2q27gI4A0b3MhLwCK4BGAYYCw/s640/Screen%2BShot%2B2018-08-22%2Bat%2B8.40.23%2BAM.png" width="640" /></a><br />
<br />
Stop the game:<br />
<br />
<a href="http://1.bp.blogspot.com/-fNqxBg0IUqo/W32HRDjlWhI/AAAAAAAAFJ0/CSwJpMjtXcUSSOsYfiJbKmLeaqcqkt8HQCK4BGAYYCw/s1600/Screen%2BShot%2B2018-08-22%2Bat%2B8.40.34%2BAM.png" imageanchor="1"><img border="0" src="https://1.bp.blogspot.com/-fNqxBg0IUqo/W32HRDjlWhI/AAAAAAAAFJ0/CSwJpMjtXcUSSOsYfiJbKmLeaqcqkt8HQCK4BGAYYCw/s400/Screen%2BShot%2B2018-08-22%2Bat%2B8.40.34%2BAM.png" /></a><br />
<br />
Now right click select the Workspace and "Paste Into":<br />
<br />
<a href="http://1.bp.blogspot.com/-jK_IZvf4zUI/W32HX0Wq9bI/AAAAAAAAFJ8/vfVBT28BmhIF6x3V_RuWBYF7mOLGCniNQCK4BGAYYCw/s1600/Screen%2BShot%2B2018-08-22%2Bat%2B8.40.44%2BAM.png" imageanchor="1"><img border="0" src="https://1.bp.blogspot.com/-jK_IZvf4zUI/W32HX0Wq9bI/AAAAAAAAFJ8/vfVBT28BmhIF6x3V_RuWBYF7mOLGCniNQCK4BGAYYCw/s400/Screen%2BShot%2B2018-08-22%2Bat%2B8.40.44%2BAM.png" /></a><br />
<br />
Now you have a copy of the character in the Workspace. Select the character, and right click to "Export Selection":<br />
<br />
<a href="http://4.bp.blogspot.com/-2NYjqENROEk/W32HtERoALI/AAAAAAAAFKI/aT-vUkidvYcRbJEdE7BgIyb3lyGADkORwCK4BGAYYCw/s1600/Screen%2BShot%2B2018-08-22%2Bat%2B8.41.02%2BAM.png" imageanchor="1"><img border="0" height="640" src="https://4.bp.blogspot.com/-2NYjqENROEk/W32HtERoALI/AAAAAAAAFKI/aT-vUkidvYcRbJEdE7BgIyb3lyGADkORwCK4BGAYYCw/s640/Screen%2BShot%2B2018-08-22%2Bat%2B8.41.02%2BAM.png" width="483" /></a><br />
<br />
Congratulations, you've just exported the 3D OBJ file mesh with textures!<br />
<br />
<a href="http://3.bp.blogspot.com/-WFwoAtYYhtU/W32IIfg63kI/AAAAAAAAFKU/mf26THb9PSkD86tYZ53QWjm6X754OPc-wCK4BGAYYCw/s1600/Screen%2BShot%2B2018-08-22%2Bat%2B8.42.41%2BAM.png" imageanchor="1"><img border="0" height="291" src="https://3.bp.blogspot.com/-WFwoAtYYhtU/W32IIfg63kI/AAAAAAAAFKU/mf26THb9PSkD86tYZ53QWjm6X754OPc-wCK4BGAYYCw/s400/Screen%2BShot%2B2018-08-22%2Bat%2B8.42.41%2BAM.png" width="400" /></a><br />
<br />
Load the OBJ file into <a href="http://www.meshlab.net/" target="_blank">Meshlab</a>. It automatically will load up the texture files as well. Your character needs to be scaled for proper print size. For Shapeways full-color sandstone, I find the character needs to be scaled up by 10-20 x for 3-5 inches tall to be "the right size". In Meshlab that is Filter/Normals, Curvature and Orientation/Transform, Scale, Normalize:<br />
<br />
<a href="http://4.bp.blogspot.com/-N4c6LtFcvQo/W32LHjHGfnI/AAAAAAAAFKg/n3jR8q0C3ckKPeIxuBgyP8ALdtUplmJ3QCK4BGAYYCw/s1600/Screen%2BShot%2B2018-08-22%2Bat%2B9.05.15%2BAM.png" imageanchor="1"><img border="0" height="443" src="https://4.bp.blogspot.com/-N4c6LtFcvQo/W32LHjHGfnI/AAAAAAAAFKg/n3jR8q0C3ckKPeIxuBgyP8ALdtUplmJ3QCK4BGAYYCw/s640/Screen%2BShot%2B2018-08-22%2Bat%2B9.05.15%2BAM.png" width="640" /></a><br />
<br />
To work with <a href="https://www.shapeways.com/" target="_blank">Shapeways</a> in full-color, export from Meshlab as "Collada File Format", i.e. ".dae". ZIP the DAE file and all the PNG texture files together. Then upload the zip file to Shapeways. Select Sandstone / Full-Color to print in color:<br />
<br />
<a href="http://1.bp.blogspot.com/-3B2tDJaK8ic/W32MxTRUN0I/AAAAAAAAFKs/tdJivEIHXl8SRoLVUJ7t72BQyohZdMI4ACK4BGAYYCw/s1600/Screen%2BShot%2B2018-08-22%2Bat%2B9.13.08%2BAM.png" imageanchor="1"><img border="0" height="562" src="https://1.bp.blogspot.com/-3B2tDJaK8ic/W32MxTRUN0I/AAAAAAAAFKs/tdJivEIHXl8SRoLVUJ7t72BQyohZdMI4ACK4BGAYYCw/s640/Screen%2BShot%2B2018-08-22%2Bat%2B9.13.08%2BAM.png" width="640" /></a><br />
<br />
Watch out, Shapeways gets really expensive with the size of the character because you are being charged on volume (scales by a cubic function!). A 3 inch character is around $50, a 5 inch character is around $100.<br />
<br />
It is possible that your character may be rejected for printing due to thin walls or other Shapeways printing restrictions. Fixing that is going to be a topic of another post!<br />
<br />
If you have a 3D printer at home, you can of course export an STL file from Meshlab, import into your slicer, and then just print a cheap monochrome version.<br />
<br />
Good luck!t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-22816867611420355362018-07-19T14:12:00.002-07:002018-07-19T14:12:32.152-07:003D Printer CAD Workflow for MermaidMy daughter wanted me to make a mermaid:<br />
<br />
<a href="http://4.bp.blogspot.com/-S1BUxflQyHM/W1D8zPnpCKI/AAAAAAAAFC8/M4rif-bwzoMAJIIQZyXOjGaqJ_mg1z3fACK4BGAYYCw/s1600/37376139_10215287524075045_4364652745240608768_n.jpg" imageanchor="1"><img border="0" height="320" src="https://4.bp.blogspot.com/-S1BUxflQyHM/W1D8zPnpCKI/AAAAAAAAFC8/M4rif-bwzoMAJIIQZyXOjGaqJ_mg1z3fACK4BGAYYCw/s320/37376139_10215287524075045_4364652745240608768_n.jpg" width="240" /></a><br />
<br />
This required some "organic" curved shapes. I've found that <a href="http://www.swappsforkids.com/" target="_blank">SolidWorks Apps for Kids</a> is a great way to make those kinds of shapes:<br />
<br />
<a href="http://1.bp.blogspot.com/-1YrScUmWJpc/W1D9GRRJtJI/AAAAAAAAFDI/tlHGdZH3alImNbQKUw78N0GA5uZ4qfiKwCK4BGAYYCw/s1600/Screen%2BShot%2B2018-07-18%2Bat%2B9.31.43%2BPM.png" imageanchor="1"><img border="0" height="320" src="https://1.bp.blogspot.com/-1YrScUmWJpc/W1D9GRRJtJI/AAAAAAAAFDI/tlHGdZH3alImNbQKUw78N0GA5uZ4qfiKwCK4BGAYYCw/s320/Screen%2BShot%2B2018-07-18%2Bat%2B9.31.43%2BPM.png" width="276" /></a><br />
<br />
But since you can't import anything into SWAFK, I exported the STL, and loaded it into <a href="https://www.tinkercad.com/" target="_blank">TinkerCad</a> to add a head I found on <a href="https://www.thingiverse.com/" target="_blank">Thingiverse</a>:<br />
<br />
<a href="http://1.bp.blogspot.com/-ixhBvdYhORw/W1D98YJxlgI/AAAAAAAAFDU/DE5q1nyIIToJaN6qutNTZzMxriI5eMDjQCK4BGAYYCw/s1600/Screen%2BShot%2B2018-07-18%2Bat%2B9.30.57%2BPM.png" imageanchor="1"><img border="0" height="320" src="https://1.bp.blogspot.com/-ixhBvdYhORw/W1D98YJxlgI/AAAAAAAAFDU/DE5q1nyIIToJaN6qutNTZzMxriI5eMDjQCK4BGAYYCw/s320/Screen%2BShot%2B2018-07-18%2Bat%2B9.30.57%2BPM.png" width="242" /></a><br />
<br />
Export to STL again, sliced in <a href="https://ultimaker.com/en/products/ultimaker-cura-software" target="_blank">Cura</a> to gcode, then printed on my <a href="https://www.monoprice.com/Product?p_id=15365" target="_blank">Monoprice MP Select Mini V2</a>:<br />
<br />
<a href="http://1.bp.blogspot.com/-8ectgSyZN7s/W1D-euCM9ZI/AAAAAAAAFDg/GHxAWLgwb1YQKKVd5BKHZcuXHf5a-s-IACK4BGAYYCw/s1600/IMG_6969.jpg" imageanchor="1"><img border="0" height="320" src="https://1.bp.blogspot.com/-8ectgSyZN7s/W1D-euCM9ZI/AAAAAAAAFDg/GHxAWLgwb1YQKKVd5BKHZcuXHf5a-s-IACK4BGAYYCw/s320/IMG_6969.jpg" width="238" /></a><br />
<br />
<br />t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-34120856722717954232017-11-14T19:33:00.002-08:002017-11-14T19:33:25.455-08:00FABRIK Inverse Kinematics in 3D with AL5D ArmFABRIK with Caliko works great for inverse kinematics in 3D as well! It took me a long time to determine the proper constraint on the first bone (a pan table) to rotate only. Not sure if I did it the "correct way", but it works anyhow.<br />
<br />
I cannot recommend trying the Caliko visualization with GLFW unless you are a GLFW expert. I spent a long time trying to get it to compile on Eclipse and run without any success. Lots of combinations of OpenGL and GFLW and Java that can go wrong. Thus I gave up and used Caliko to output the arm positions in text for input into good old Python with matplotlib.<br />
<br />
I'll note that I am modeling my AL5D arm without the wrist & gripper connection. This is because for my use case of playing chess, I want the wrist to always point down, and I've added some tongs to the gripper to reach between the chess pieces to grab them from above without knocking down other chess pieces. So I am only modeling the pan base and the first two hinged "bones" and looking at a target that is 140mm above the chess board.<br />
<br />
Here are some results of the IK calculations with FABRIK via Caliko. Note that even in the last case where the arm cannot reach the target, it at least "reaches out towards it", which is better than the algorithm crashing or returning NaN...<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-0LbnXYSCwi4/Wgs1XVOahiI/AAAAAAAAEuM/1oQayruhlK8nRsG-Y49fbX6HMyCVv8oBQCLcBGAs/s1600/Screen%2BShot%2B2017-11-14%2Bat%2B10.21.50%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="770" data-original-width="992" height="248" src="https://1.bp.blogspot.com/-0LbnXYSCwi4/Wgs1XVOahiI/AAAAAAAAEuM/1oQayruhlK8nRsG-Y49fbX6HMyCVv8oBQCLcBGAs/s320/Screen%2BShot%2B2017-11-14%2Bat%2B10.21.50%2BAM.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-iLDfi9u7OHE/Wgs1XcLwmUI/AAAAAAAAEuI/KYbqws8Mmi4GtYfbuN_NGUdMk-vBEhEZQCLcBGAs/s1600/Screen%2BShot%2B2017-11-14%2Bat%2B10.22.13%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="768" data-original-width="988" height="248" src="https://1.bp.blogspot.com/-iLDfi9u7OHE/Wgs1XcLwmUI/AAAAAAAAEuI/KYbqws8Mmi4GtYfbuN_NGUdMk-vBEhEZQCLcBGAs/s320/Screen%2BShot%2B2017-11-14%2Bat%2B10.22.13%2BAM.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-eFjjp4tI0NA/Wgs1XbnEl9I/AAAAAAAAEuE/mlwlgeCy1y83oZY7_cn7ViXneQYJa40XACLcBGAs/s1600/Screen%2BShot%2B2017-11-14%2Bat%2B10.22.37%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="770" data-original-width="988" height="249" src="https://2.bp.blogspot.com/-eFjjp4tI0NA/Wgs1XbnEl9I/AAAAAAAAEuE/mlwlgeCy1y83oZY7_cn7ViXneQYJa40XACLcBGAs/s320/Screen%2BShot%2B2017-11-14%2Bat%2B10.22.37%2BAM.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-vKORcjoPu1Q/Wgs1YB0JPjI/AAAAAAAAEuQ/GB0w-Db1CMcyLIP9aoN4D_uC5mpXWZ4LgCLcBGAs/s1600/Screen%2BShot%2B2017-11-14%2Bat%2B10.24.15%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="768" data-original-width="992" height="247" src="https://1.bp.blogspot.com/-vKORcjoPu1Q/Wgs1YB0JPjI/AAAAAAAAEuQ/GB0w-Db1CMcyLIP9aoN4D_uC5mpXWZ4LgCLcBGAs/s320/Screen%2BShot%2B2017-11-14%2Bat%2B10.24.15%2BAM.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-zHs7zYmtfSM/Wgs1YvMkWjI/AAAAAAAAEuU/Zx43BWuduWk3EMRdk6j6_2pYaMF2vBsJgCLcBGAs/s1600/Screen%2BShot%2B2017-11-14%2Bat%2B10.24.35%2BAM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="766" data-original-width="986" height="248" src="https://2.bp.blogspot.com/-zHs7zYmtfSM/Wgs1YvMkWjI/AAAAAAAAEuU/Zx43BWuduWk3EMRdk6j6_2pYaMF2vBsJgCLcBGAs/s320/Screen%2BShot%2B2017-11-14%2Bat%2B10.24.35%2BAM.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Here is the Caliko code:</div>
<script src="https://gist.github.com/t11s/1936da077decae5f8d34a6fca7426dc6.js"></script>
<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
And here is the Python plotting code:<br />
<br />
<script src="https://gist.github.com/t11s/f375545605b6a18cb30dcdb39213cb97.js"></script>
t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com1tag:blogger.com,1999:blog-16875966.post-19702814776444486642017-11-08T20:30:00.003-08:002017-11-08T20:30:32.093-08:00Trying Caliko FABRIK Inverse Kinematics in 2DI downloaded <a href="https://github.com/FedUni/caliko" target="_blank">Caliko, the FABRIK inverse kinematic solver</a> in Java. It has great documentation, along with guidance about how to properly use its jars as libraries in Eclipse (I don't do much Java, glad they mentioned that). The Javadocs for Caliko is excellent, so I took one of their examples, removed the visualization and added information about the location of bones in the chain and the angles between them:<br />
<br />
<script src="https://gist.github.com/t11s/7d74f193da3b8891137e756b4d2675ba.js"></script>
<br />
Here is an example solution output:<br />
<br />
<script src="https://gist.github.com/t11s/f625e1eb7033e7fe436b617630963996.js"></script>
Because I don't have a good OpenGL working right now, I just took the data from the chain and plotted it in Excel. Here are some examples - the red dot is the target:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-2IVjAzNZ7Qs/WgPXxVxlRRI/AAAAAAAAEtA/8lJGAP0XfOMoMnsB9xIOQHh5jLhEcZVCACLcBGAs/s1600/caliko_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="704" data-original-width="704" height="320" src="https://1.bp.blogspot.com/-2IVjAzNZ7Qs/WgPXxVxlRRI/AAAAAAAAEtA/8lJGAP0XfOMoMnsB9xIOQHh5jLhEcZVCACLcBGAs/s320/caliko_1.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-MyF4XMddJP4/WgPXzRrqdlI/AAAAAAAAEtE/DNoWySCyTXEU7kRVJ6p4gWAt6C6HRcDmgCLcBGAs/s1600/caliko_2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="796" data-original-width="760" height="320" src="https://2.bp.blogspot.com/-MyF4XMddJP4/WgPXzRrqdlI/AAAAAAAAEtE/DNoWySCyTXEU7kRVJ6p4gWAt6C6HRcDmgCLcBGAs/s320/caliko_2.jpg" width="305" /></a></div>
<br />t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-83402953822421754842017-11-08T15:48:00.000-08:002017-11-08T20:01:22.538-08:00ikpy - Inverse Inematics, yes. Limits, no!The <a href="https://github.com/Phylliade/ikpy" target="_blank">Python inverse kinematics library, ikpy</a>, works fine, and it has a cool mechanism to plot chain visualization from Python using <span style="font-family: "menlo"; font-size: 11px;">matplotlib.pyplot</span>. EXCEPT ikpy seems to have no concept of collision areas or joint limits.<br />
<br />
I found this out by putting in my <a href="http://www.lynxmotion.com/c-130-al5d.aspx" target="_blank">Lynxmotion AL5D robot arm</a> model as URDF, and loading into ikpy. Works fine for a target at [17,3,3] (cm):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-rgIaheSkxp8/WgOWXzBiAqI/AAAAAAAAEss/PVOEnfEIHoE2zX4oVtPIYHh8XVQWH5m4QCLcBGAs/s1600/target_17_3_3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="926" height="248" src="https://3.bp.blogspot.com/-rgIaheSkxp8/WgOWXzBiAqI/AAAAAAAAEss/PVOEnfEIHoE2zX4oVtPIYHh8XVQWH5m4QCLcBGAs/s320/target_17_3_3.jpg" width="320" /></a></div>
<br />
However if I have a target at [20,3,3], it drives the arm through the table (i.e. Z=0):<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-8MYe5K4wVeI/WgOWkCwImnI/AAAAAAAAEsw/RbLFlYVJMkEhQ90RB1-P_96MdSAty6vQwCLcBGAs/s1600/target_20_3_3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="636" data-original-width="806" height="252" src="https://1.bp.blogspot.com/-8MYe5K4wVeI/WgOWkCwImnI/AAAAAAAAEsw/RbLFlYVJMkEhQ90RB1-P_96MdSAty6vQwCLcBGAs/s320/target_20_3_3.jpg" width="320" /></a></div>
<br />
If you'd like to see the URDF and IK calculation code, it is <a href="https://github.com/t11s/AL5D-URDF" target="_blank">here</a>.<br />
<br />
So I recommend ikpy for unconstrained 3D modeling, but lacks practicality for me!<br />
<br />
So next step, I am going to try <a href="https://github.com/FedUni/caliko" target="_blank">Caliko with its FABRIK IK</a> solver in Java.<br />
<br />t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-8817821579602686362017-11-05T22:26:00.000-08:002017-11-05T22:32:32.722-08:00Inverse Kinematics Take 2The current <a href="https://techartblog.blogspot.com/2013/06/lynxmotion-al5d-arm-inverse-kinetics.html" target="_blank">inverse kinematics code</a> I have for my Lynxmotion AL5D arm fails to converge towards the edges of the chess board.<br />
<br />
One efficient way to solve IK is the <a href="http://wiki.roblox.com/index.php?title=Inverse_kinematics#FABRIK" target="_blank">FABRIK algorithm</a>. <br />
<br />
There is a <a href="https://github.com/Phylliade/ikpy" target="_blank">Python inverse kinematics library, ikpy</a>. It needs a <a href="http://wiki.ros.org/urdf" target="_blank">Unified Robot Description Format (URDF)</a> file to describe the arm though.<br />
<br />
Also there is a Java FABRIK:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/wEtp4P2ucYk/0.jpg" src="https://www.youtube.com/embed/wEtp4P2ucYk?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<br />t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-31289886178358583512017-11-03T22:46:00.002-07:002017-11-03T22:49:35.444-07:00New Affordable Bus Robotic Servos from LewanSoulNo idea as to the actual quality of these, but LewanSoul now has the LX-16A 17 kg·cm (236 oz·in) @7.4V robotic servo controlled over a bus (perhaps with the same command structure as a Dynamixel) with position/voltage/temperature feedback <a href="https://www.amazon.com/LewanSoul-Real-Time-Feedback-Position-Temperature/dp/B0748BQ49M/ref=sr_1_3?ie=UTF8&qid=1509774013&sr=8-3&keywords=LewanSoul+bus" target="_blank">for only $15.99</a>. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/aOgxtth757A/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/aOgxtth757A?feature=player_embedded" width="320"></iframe></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/kDZElWO4o-w/0.jpg" src="https://www.youtube.com/embed/kDZElWO4o-w?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<br />
<br />
LewanSould also has what appears to be a fairly well-built, if not particularly long reach, 6DOF arm <a href="https://www.amazon.com/LewanSoul-LeArm-Controller-Wireless-Tutorials/dp/B074T6DPKX" target="_blank">for $119.99</a> with servos (not the digital bus servos above, though). This will definitely give the <a href="http://www.lynxmotion.com/c-27-robotic-arms.aspx" target="_blank">Lynxmotion Arms</a> some serious competition.t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-52334144045364836252016-05-29T14:19:00.000-07:002016-05-29T14:19:21.281-07:00Web controlled robotic arm with PiA web controlled robotic arm based on the Raspberry Pi.<br />
<br />
There is a daemon running in the background called web_arm.py, which sets up a FIFO (arm.fifo) to receive commands. The cgi-bin is xy.py which receives x,y coordinates from a click on an image, then the cgi-bin sends the coordinates to the fifo. web_arm performs inverse kinematics and drives the servo controller over the serial port, and the servos drive the arm.<br />
<br />
<a href="https://github.com/t11s/robot_arm" target="_blank">Full code on GitHub</a>.t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-61717818879201591702016-01-20T22:41:00.001-08:002016-01-20T22:41:56.727-08:00Desktop GUI for AWS UbuntuThis seemed harder to Google for than you'd think.<br />
<br />
Imagine you want a desktop on Ubuntu Linux on an AWS EC2 instance, and you'd like to access it from OS X. The sanest thing is to follow these instructions on <a href="https://help.ubuntu.com/community/EC2-VNC" target="_blank">installing kubuntu-desktop and tightvnc on the Ubuntu instance</a> [with <a href="http://www.penguintutor.com/linux/tightvnc" target="_blank">more info here</a>], and the <a href="http://osxdaily.com/2013/04/05/vnc-client-mac-os-x-screen-sharing/" target="_blank">"Screen Sharing"</a> app built into OS X. Access the Ubuntu instance with "[ip address]:590[x]" where [x] is the X display number that tightvnc attaches to, generally 1 (so it would be "[ip address]:5901"). Don't forget to set up a security group to allow the VNC port(s).<br />
<br />
<br />t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-65207373873065540332015-03-13T13:44:00.000-07:002015-03-13T13:47:47.941-07:00Netflix Speed Graph over TimeAs we learn about the new "Net Neutrality" rules from the FCC, I thought it would be interesting to share the graph from the Netflix Speed Report of average Netflix access speed for various carriers over time. Of note, things got much better in Sept. 2014 when interconnection arrangements were improved for several major carriers.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-xcE4TDmcIPs/VQNMhQsXiWI/AAAAAAAAB_g/0SYTEEUG2EU/s1600/Netflix%2BSpeed%2BReport%2BTime.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-xcE4TDmcIPs/VQNMhQsXiWI/AAAAAAAAB_g/0SYTEEUG2EU/s1600/Netflix%2BSpeed%2BReport%2BTime.jpg" height="254" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-17162741366543147912015-03-11T23:40:00.006-07:002015-03-12T08:08:19.456-07:003D Scan/Print Kiosks ReviewI recently ran into two 3D scan/print kiosks in malls. The first is <a href="http://www.doob3d.com/" target="_blank">DOOB</a>, which has kiosks at Santa Monica Place, CA (just off Third Street Promenade) and Chelsea Market NYC. The kiosk has a very large cylindrical room with a wall covered with cameras and lights. You walk in, get captured instantly by the cameras, and then they ship you the prints in about two weeks. Prints go up to 14 inches tall, but they are a little expensive, so I went for the cheapest one (4 inches tall). The result is cool, but looks a bit "out of focus":<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-JVAQM2Xc8OM/VQEuptldgLI/AAAAAAAAB-g/3bjKIiPHM8k/s1600/IMG_5310.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-JVAQM2Xc8OM/VQEuptldgLI/AAAAAAAAB-g/3bjKIiPHM8k/s1600/IMG_5310.JPG" height="400" width="300" /></a></div>
<br />
DOOB does not give you the mesh file, which is sad.<br />
<br />
Then I ran into <a href="http://web.twindom.com/" target="_blank">Twindom</a>, which has studio locations in San Mateo, CA, Houston, TX, and a kiosk at the Valley Fair Mall in Santa Clara, CA. They also had a cylindrical <a href="http://web.twindom.com/twinstant/" target="_blank">"Twinstant"</a> room with 91 cameras. Unlike DOOB, "Twinstant" appears to use typical consumer DSLRs (you can hear them click), and it takes about a second for them all to snap a shot. The prints I saw at the kiosk were clearly inferior to DOOB, so I did not bother with a print, but they said I could get a scan and download the mesh file, so I went for it. Here is my mesh in mesh lab:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-LlryqUCcV1E/VQExTBAqXXI/AAAAAAAAB-s/R1obyDwGLuc/s1600/Screen%2BShot%2B2015-03-11%2Bat%2B11.24.09%2BPM.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-LlryqUCcV1E/VQExTBAqXXI/AAAAAAAAB-s/R1obyDwGLuc/s1600/Screen%2BShot%2B2015-03-11%2Bat%2B11.24.09%2BPM.jpg" height="400" width="241" /></a></div>
<br />
Overall the mesh looks OK, but a closeup of my face shows a lot of problems. I think it might be useful if they dedicated some zoomed in cameras for enhanced photogrametry in the face. As human beings, we are more likely to notice problems in the face than problems with your pants, etc.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-QFgEZKC7568/VQEy2_ir-CI/AAAAAAAAB-4/sp3YDo3OGcI/s1600/Screen%2BShot%2B2015-03-11%2Bat%2B11.26.15%2BPM.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-QFgEZKC7568/VQEy2_ir-CI/AAAAAAAAB-4/sp3YDo3OGcI/s1600/Screen%2BShot%2B2015-03-11%2Bat%2B11.26.15%2BPM.jpg" height="378" width="400" /></a></div>
<br />
My verdict: Given the huge number of cameras in these rooms, I was expecting better results. However I will admit that there is no simple way to quickly and affordably do an "instant" scan your entire body except for DOOB & Twindom. <a href="http://techartblog.blogspot.com/2014_12_01_archive.html" target="_blank">My experiments with structured light Kinect & Scanect</a> where I had to spin around on a chair without moving much did not do much better with my face.<br />
<br />
On the other hand, if you just want to capture a 3D mesh of your face or torso, you are better off freezing in one place and letting a friend take 10 or so good shots with a DSLR and then <a href="http://techartblog.blogspot.com/2014_01_01_archive.html" target="_blank">process them into a mesh with Autocad 123D Catch.</a><br />
<br />
That said, my kids are happy that I can now hang out with Peppa Pig and her friends!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-3p-wUD3t9Sg/VQE0s25-h3I/AAAAAAAAB_E/sY0Y-kmGTCA/s1600/Screen%2BShot%2B2015-03-11%2Bat%2B11.39.00%2BPM.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-3p-wUD3t9Sg/VQE0s25-h3I/AAAAAAAAB_E/sY0Y-kmGTCA/s1600/Screen%2BShot%2B2015-03-11%2Bat%2B11.39.00%2BPM.jpg" height="400" width="640" /></a></div>
<br />
<br />t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-28519767792417466842015-03-10T22:55:00.002-07:002015-03-11T08:06:42.554-07:00Long Loops and Slow US Internet Access SpeedsLike many people, I've been wondering why the US seems to lag many other countries on Internet access speeds.<br />
<br />
Here is a key issue: Our twisted-pair copper local loop infrastructure has longer local loops:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-35hJE1Io5y0/VPuD2C2aHvI/AAAAAAAAB9k/GZ-iM2oOSPw/s1600/local_loop_lengths.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-35hJE1Io5y0/VPuD2C2aHvI/AAAAAAAAB9k/GZ-iM2oOSPw/s1600/local_loop_lengths.png" height="225" width="400" /></a></div>
<div>
<br /></div>
<i>(source <a href="http://www.itif.org/files/ExplainingBBLeadership.pdf" target="_blank">"Explaining International Broadband Leadership"</a>, The Information & Technology Innovation Foundation)</i><br />
<br />
Because we have longer local loops, DSL speeds are always going to be slower than countries with shorter local loops. For example, loops over 3km are never going to see 10 Mbps DSL:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-ayY6C3mrVgI/VPuEA_sGtMI/AAAAAAAAB9s/IAiXANQV0ME/s1600/ADSL-adsl2-speed-against-distance.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-ayY6C3mrVgI/VPuEA_sGtMI/AAAAAAAAB9s/IAiXANQV0ME/s1600/ADSL-adsl2-speed-against-distance.png" height="225" width="400" /></a></div>
<br />
<br />
Why does the US have such long local loops? This is a question I don't have a good answer to. I do not believe it is just that the US is more rural, as I have heard complaints about 3 km local loops in fairly urban areas. Australia also has lots of rural areas, but it has shorter local loops on average.<br />
<br />
It is possible that it is because the US adopted electronic telephone switching before other countries, and/or perhaps there were stronger forces driving Central Office consolidation. You can imagine that with 4 km local loops, one CO can serve the same area as 7 COs with 1.5 km local loops. Thus it is more efficient for telephony to have fewer central offices and longer local loops, but it turns out to be bad years later for DSL.<br />
<br />
<a href="https://www.blogger.com/blogger.g?blogID=16875966" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><a href="https://www.blogger.com/blogger.g?blogID=16875966" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a>Because of this, the highest speed broadband in the US is going to be dominated by cable (DOCSIS), Fiber to the Node (FTTN), and Fiber to the Home (FTTH), in order of expense and speed. But a lot of people are cheap, and like DSL. Plus DSL runs on telephony infrastructure that is already run almost everywhere, while the other faster technologies need newer build-outs. So this structural difference will likely keep US average Internet speeds down even while higher speed services like 1 Gbps FTTH Google Fiber is being deployed.<br />
<br />
There also is a competitive issue - the slow DSL reduces the pressure on alternative connectivity mechanisms to deliver faster service.<br />
<br />
That said, Americans are getting faster average Internet speeds over time, now doubling every three years. Here is a graph based on data from <a href="http://www.akamai.com/stateoftheinternet/" target="_blank">The Akamai State of the Internet Reports</a>:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-8tBLOJ8Gozc/VP_Z5ISwWLI/AAAAAAAAB-M/DMcKqEScOR4/s1600/US%2BInternet%2BSpeed%2Bby%2BYear.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-8tBLOJ8Gozc/VP_Z5ISwWLI/AAAAAAAAB-M/DMcKqEScOR4/s1600/US%2BInternet%2BSpeed%2Bby%2BYear.jpg" height="433" width="640" /></a></div>
<br />
<a href="https://www.blogger.com/blogger.g?blogID=16875966" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></a><br />t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com1tag:blogger.com,1999:blog-16875966.post-19328018354538971712014-12-03T23:13:00.002-08:002014-12-03T23:13:39.794-08:00First run with Kinect Xbox & SkanectSo I went ahead and picked up a Kinect for Xbox and <a href="http://skanect.occipital.com/" target="_blank">Skanect</a> (for Mac). By the way, the Kinect came with a power supply, so I didn't need to purchase a separate power supply.<br />
<br />
Skanect was pretty easy to use. I'm not totally happy with the mesh from this first run result, so I'll have to work on refining either my scanning technique or learning how to smooth meshes in Blender.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-fAIYU_1xBn8/VIAJP0UGLMI/AAAAAAAAB3o/mk4Rpx20j8A/s1600/tom3d_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-fAIYU_1xBn8/VIAJP0UGLMI/AAAAAAAAB3o/mk4Rpx20j8A/s1600/tom3d_1.jpg" height="320" width="272" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-e_mWaFHEI7w/VIAJQOFnTWI/AAAAAAAAB3s/9H_WvRhCDuo/s1600/tom3d_2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-e_mWaFHEI7w/VIAJQOFnTWI/AAAAAAAAB3s/9H_WvRhCDuo/s1600/tom3d_2.jpg" height="320" width="233" /></a></div>
<div>
<br /></div>
<br />
<br />t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-49365914701801363402014-11-22T14:10:00.002-08:002014-11-22T14:10:44.942-08:00Dorkbot SoCal 57 on Dec. 7<h2 style="font-family: monospace;">
Dorkbot SoCal 57</h2>
<span style="font-family: monospace;">***** Sunday, December 7, 2014</span><br style="font-family: monospace;" /><span style="font-family: monospace;">***** 12:00 noon to 2:00pm</span><br style="font-family: monospace;" /><span style="font-family: monospace;">***** Machine Project</span><br style="font-family: monospace;" /><span style="font-family: monospace;">***** 1200 D North Alvarado Street</span><br style="font-family: monospace;" /><span style="font-family: monospace;">***** Los Angeles, CA 90026</span><br style="font-family: monospace;" /><span style="font-family: monospace;">***** </span><a href="http://maps.google.com/maps?f=q&hl=en&q=1200+D+North+Alvarado+Street%2C+Los+Angeles%2C+CA" style="font-family: monospace;" target="_new">Google map of Machine Project</a><br style="font-family: monospace;" /><br style="font-family: monospace;" /><span style="font-family: monospace;">Speakers will include...</span><br style="font-family: monospace;" /><br style="font-family: monospace;" /><b style="font-family: monospace;">Brian Goeltzenleuchter</b><br style="font-family: monospace;" /><a href="http://www.bgprojects.com/" style="font-family: monospace;">http://www.bgprojects.com</a><br style="font-family: monospace;" /><br style="font-family: monospace;" /><span style="font-family: monospace;">Scenting the antiseptic institution For over eight years Brian Goeltzenleuchter has designed olfactory-based art installations which disseminate scent in one of the most antiseptic of institutions, the art museum. While designing evocative smells might appear to be the olfactory artist's primary creative challenge, Brian's presentation will point to another challenge that is often overlooked for its technical and creative potential: The device itself used to transmit the scent. Using as case studies four recent art projects, Brian's Dorkbot presentation will consider a variety of scent distribution devices - from lower tech to higher tech - and offer technical, poetic and conceptual justification for his choice of each. The presentation will conclude with a description of a forthcoming project, and a challenge to the audience to identify solutions to the challenges it poses in distributing scent. </span><br style="font-family: monospace;" /><br style="font-family: monospace;" /><img src="http://dorkbot.org/dorkbotsocal/img/Goeltzenleuchter_1.jpg" style="font-family: monospace;" /><span style="font-family: monospace;"> </span><img src="http://dorkbot.org/dorkbotsocal/img/Goeltzenleuchter_2.jpg" style="font-family: monospace;" /><br style="font-family: monospace;" /><br style="font-family: monospace;" /><br style="font-family: monospace;" /><b style="font-family: monospace;">Soyoung Shin</b><br style="font-family: monospace;" /><a href="http://soyoungshin.com/" style="font-family: monospace;">http://soyoungshin.com</a><br style="font-family: monospace;" /><br style="font-family: monospace;" /><span style="font-family: monospace;">Soyoung lives in Los Angeles, California, USA. She graduated in 2011 from the University of Washington with a Bachelors of Science in Computer Science. She has a post-disciplinary practice that includes sculpture, performance, video, photography, and technology. Soyoung enjoys the intersection of media and science, and her work uses new technologies to create connections between viewers and ideas. Using found advertisements and a readymade discount robotic teddy bear, "THE 50% OFF BALLET" calls attention toward underlying attitudes which frame Valentine's Day. This piece places the viewer in a position where they are provided messaging from media ranging from musical typical of the holiday, to what could be considered perverse. </span><br style="font-family: monospace;" /><br style="font-family: monospace;" /><img src="http://dorkbot.org/dorkbotsocal/img/50_percent.jpg" style="font-family: monospace;" /><span style="font-family: monospace;"> </span><br style="font-family: monospace;" /><br style="font-family: monospace;" /><b style="font-family: monospace;">Brian Matthews</b><br style="font-family: monospace;" /><a href="http://www.flappingsprocket.com/" style="font-family: monospace;">http://www.flappingsprocket.com</a><br style="font-family: monospace;" /><br style="font-family: monospace;" /><span style="font-family: monospace;">Since engineer/artist Brian Matthews made his first pair of mechanical wings in 1998, wing making became his passion. He has made 17 pairs of wings varying in materials and operation from simple pulley opening to pneumatics and robotic control. Most recently, he built a robotic "extra hand", and a 3D printed robotic parrot called "Pollymer". </span><br style="font-family: monospace;" /><br style="font-family: monospace;" /><img src="http://3dprint.com/wp-content/uploads/2014/11/parrotgif.gif" style="font-family: monospace;" /><span style="font-family: monospace;"> </span><img src="http://dorkbot.org/dorkbotsocal/img/parrot_3d.jpg" style="font-family: monospace;" /><span style="font-family: monospace;"> </span><br style="font-family: monospace;" /><br style="font-family: monospace;" /><b style="font-family: monospace;">Adam Florin</b><br style="font-family: monospace;" /><a href="http://loommakesmusic.com/" style="font-family: monospace;">http://loommakesmusic.com/</a><br style="font-family: monospace;" /><br style="font-family: monospace;" /><span style="font-family: monospace;">Adam will present a software system for creating generative music called Loom. Loom produces music by using random number generation to distort its internal model of musical "gesture". The project came out of his research and practice at CalArts.</span><br style="font-family: monospace;" /><br style="font-family: monospace;" /><img src="http://dorkbot.org/dorkbotsocal/img/loom.jpg" style="font-family: monospace;" /><span style="font-family: monospace;"> </span>t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-15499081305752028742014-11-12T11:42:00.001-08:002014-11-12T11:42:15.414-08:00Receiving Multicast on Ubuntu 12.04.4 LTSIf you are running Ubuntu 12.04.4 LTS, you may be surprised that you cannot receive multicast packets in your programs using the normal socket interface, but then you run tcpdump and can receive the multicast packets just fine. You also might be surprised that you can send multicast packets just fine from your programs, but cannot receive them.<br />
<br />
It turns out that you need to do this (as root):<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">echo 2 > /proc/sys/net/ipv4/conf/eth0/rp_filter</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
On every interface you wish to receive multicast packets on.<br />
<br />
If you want the changes to rp_filter to be permanent, you need to add the changes to /etc/sysctl.conf and you may also want to tweak /etc/sysctl.d/10-network-security.conf<br />
<br />
A great way to test the reception of multicast packets is "mcfirst", part of the ssmping package ("<span style="font-family: Courier New, Courier, monospace;">apt-get install sampling</span>" to install). mcfirst will let you listen to any group,port on any network interface.<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">"netstat -gn"</span> will show you which multicast groups your network interfaces are subscribed to.t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-67624957200797169942014-11-04T12:37:00.000-08:002014-11-04T14:07:54.078-08:00Open vSwitch on UbuntuOMG, don't try to build Open vSwitch from source if you can avoid it, if you are on Ubuntu just <a href="https://wiki.linaro.org/LNG/Engineering/OVSOnUbuntu" target="_blank">follow these steps</a> to apt-get it, and then it builds the database and runs itself.<br />
<br />
The problem is that most normal people just want to run ovs in a VM with mininet, but I wanted to run it on a real bare-metal server with actual traffic.t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-20391973992791751672014-10-04T16:44:00.000-07:002014-10-04T16:44:31.973-07:00Photogrammetry OptionsPhotogrammetry options for 2D to 3D models:<div>
<br /></div>
<div>
<a href="http://www.123dapp.com/catch" target="_blank">123D Catch</a></div>
<div>
<a href="http://www.photomodeler.com/" target="_blank">Photomodeler</a></div>
<div>
<a href="http://www.agisoft.com/" target="_blank">Agisoft PhotoScan</a><a href="http://ccwu.me/vsfm/" target="_blank">VisualSFM (structure from motion)</a></div>
t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-50249399290786678332014-09-23T15:44:00.000-07:002014-09-23T16:12:17.954-07:00Kinect-based 3D scanning softwareI am looking for some alternatives to 123D Catch. Here is one, <a href="http://www.kscan3d.com/" target="_blank">KScan3D</a>, which says "With KScan3D software and Kinect or Xtion sensors, you can scan real objects and export 3D models in minutes." <br />
<br />
Other options include <a href="http://skanect.occipital.com/" target="_blank">Skanect</a>, and <a href="http://reconstructme.net/" target="_blank">Reconstruct Me</a>.<br />
<br />
Apparently Skanect has a Mac OS X version, and can work with <a href="https://store.structure.io/store" target="_blank">Structure Scanner</a> (attached to your iOS device and streams to your OS X computer), or Asus Xtion & Primesense Carmine and Kinect for Xbox (but not Kinect for Windows). Details on use with OS X are <a href="http://www.instructables.com/id/Easy-3D-Scanning-for-3D-Printing-Mac-PC-At-Techsho/" target="_blank">here</a>.t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-86647823358267042432014-09-20T02:18:00.003-07:002014-09-20T02:21:56.741-07:00Dorkbot SoCal 56 - The Reboot, Oct. 19<h2 style="font-family: monospace;">
Dorkbot SoCal 56 - <i>The Reboot</i></h2>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">***** Sunday, October 19, 2014</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">***** 11:00 am to 1:00pm</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">***** Machine Project</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">***** 1200 D North Alvarado Street</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">***** Los Angeles, CA 90026</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">***** <a href="http://maps.google.com/maps?f=q&hl=en&q=1200+D+North+Alvarado+Street%2C+Los+Angeles%2C+CA">Google map of Machine Project</a></span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Speakers will include...</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<b><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Garnet Hertz</span></b><br />
<a href="http://www.conceptlab.com/"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">http://www.conceptlab.com</span></a><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Dorkbot SoCal's overlord emeritus has moved to Vancouver, but will return to us through the power of videoconferencing to narrate his travelogue of the Chinese maker/hacker culture including the <a href="http://www.shenzhenmakerfaire.com/">2014 Shenzhen Maker Faire</a>, <a href="http://www.seeedstudio.com/depot/">Seeed Studio</a>, the<a href="http://www.chaihuo.org/blog/">Chaihuo Hackerspace in Shenzhen</a>, as well as the <a href="http://xinchejian.com/">Xin Che Jian Hackerspace</a> in Shanghai.</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Garnet is now the Canada Research Chair in Design and Media Arts at <a href="http://www.ecuad.ca/">Emily Carr University</a> of Art + Design in Vancouver Canada, and previously was previously Artist in Residence and Research Scientist in Informatics at UC Irvine. And he has built <a href="https://www.youtube.com/watch?v=kA87IctQ17U">robots controlled by cockroaches</a> :)</span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><img src="http://dorkbot.org/dorkbotsocal/img/maker_faire_shenzhen.jpg" /></span><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<b><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Thomas Edwards</span></b><br />
<a href="http://www.t11s.com/"><span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">http://www.t11s.com</span></a><br />
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Helvetica Neue, Arial, Helvetica, sans-serif;">Thomas will talk about how you can use 3D capture software such as <a href="http://www.123dapp.com/catch">123D Catch</a> to make your own digital holograms with <a href="http://www.zebraimaging.com/">Zebra Imaging</a>. </span><br />
<br style="font-family: monospace;" />
<img src="http://www.t11s.com/holograms/carla_hologram.gif" style="font-family: monospace;" /><span style="font-family: monospace;"> </span>t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-46426143087865660252014-09-20T02:17:00.004-07:002014-09-20T02:17:54.483-07:00Safecast bGeigie build event in Santa Monica<h2>
<span style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">bGeigie Workshop Santa Monica, CA November 1-2, 2014.</span></h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://blog.safecast.org/wp-content/uploads/2013/03/IMG_0106.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://blog.safecast.org/wp-content/uploads/2013/03/IMG_0106.jpeg" height="240" width="320" /></a></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 1em; margin-top: 1em; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">Build a GPS-enabled, data-logging, hand-held radiation detector, learn about citizen radiation monitoring, and connect with a growing network of people motivated to measure radiation in their environment and share their data with others.</span></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 1em; margin-top: 1em; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"><a href="http://www.safecast.org/" style="border: 0px; color: #6611cc; cursor: pointer; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank">Safecast</a></span><span style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">, the <a href="http://www.nrdc.org/" style="border: 0px; color: #6611cc; cursor: pointer; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"><span style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">Natural Resources Defense Council</span></a> (NRDC) and <a href="http://medcom.com/" style="border: 0px; color: #6611cc; cursor: pointer; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"><span style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">IMI International Medcom, Inc.</span></a> will host a bGeigie workshop at NRDC's offices in Santa Monica, CA on Saturday, November 1 and Sunday, November 2, 2014. During the first day of the workshop, participants will solder and assemble Safecast's Good Design-winning <a href="http://blog.safecast.org/2013/03/the-bgeigie-nano-kit/" style="border: 0px; color: #6611cc; cursor: pointer; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"><span style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">bGeigie</span></a>, learn how to use their detectors, and hear from individuals and groups involved in citizen radiation monitoring. During the second day of the workshop, trips will be arranged for participants to log radiation measurements in the field, and practice uploading and mapping their data. </span></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 1em; margin-top: 1em; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"></span></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 1em; margin-top: 1em; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">Read blogs from Safecast co-founder <a href="http://blog.safecast.org/2014/04/safecasting-dc/" style="border: 0px; color: #6611cc; cursor: pointer; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"><span style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">Sean Bonner</span></a>, IMI International Medcom’s CEO <a href="http://geigercounter.com/" style="border: 0px; color: #6611cc; cursor: pointer; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"><span style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">Dan Sythe</span></a> and NRDC health physicist <a href="http://switchboard.nrdc.org/blogs/balemayehu/a_citizen_radiation_monitoring.html" style="border: 0px; color: #6611cc; cursor: pointer; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"><span style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">Bemnet Alemayehu</span></a> about the bGeigie workshop we held in Washington, DC this past spring. For more information or to register for the event, please contact NRDC’s Matthew McKinzie at<a gdf-obfuscated-mailto="E1xPz7acppEJ" href="" style="border: 0px; color: #6611cc; cursor: pointer; margin: 0px; padding: 0px; vertical-align: baseline;" target="_blank"><span style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">mmckinzie@nrdc.org</span></a>. The bGeigie kits for this event (cost $450) can be <a href="http://medcom.com/product/bgeigie-nano-geiger-counter-kit/" style="border: 0px; color: #6611cc; cursor: pointer; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"><span style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;">ordered in advance from IMI International Medcom</span></a>. Please let us know if you or your organization would like to inquire about support to participate, as we want to grow this community.</span></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 1em; margin-top: 1em; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"><br /></span></div>
<div style="background-color: white; border: 0px; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; margin-bottom: 1em; margin-top: 1em; padding: 0px; vertical-align: baseline;">
<span style="border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;"><br /></span></div>
t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0tag:blogger.com,1999:blog-16875966.post-62858936336261022042014-01-22T22:28:00.000-08:002014-02-03T10:03:58.348-08:00Making a Full Color White Light HologramUsing <a href="https://itunes.apple.com/us/app/123d-catch/id513913018?mt=8" target="_blank">123D Catch iPhone app</a>, I captured a <a href="http://www.123dapp.com/obj-Catch/Carla/1997617" target="_blank">model of my wife Carla</a>, and then took that an made an 8x10" full-color white light hologram from <a href="http://www.zebraimaging.com/" target="_blank">Zebra Imaging</a>:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-o9z2I5Po4dg/UuCz54Kq8_I/AAAAAAAABmk/1YxYotsTa3A/s1600/6c0ba.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-o9z2I5Po4dg/UuCz54Kq8_I/AAAAAAAABmk/1YxYotsTa3A/s1600/6c0ba.gif" /></a></div>
<br />
<br />
My thoughts: 123D Catch is pretty easy to use to capture a 3D mesh. Making the hologram from the mesh on 123Dapp.com was pretty easy as well - they interface well with Zebra Imaging. I probably should have fixed up the mesh a bit in Blender or MeshLab, but I had to use a coupon before it expired. The hologram has a kind of "grid" to it, but you don't tend to notice it very much. The hologram is not very efficient, you need to illuminate it with a very bight light to see anything. I ended up purchasing an <a href="http://www.amazon.com/dp/9178904056/ref=pe_385040_30332190_TE_M3T1_ST1_dp_1" target="_blank">Ikea Jansjo Desk Work Led Lamp Light</a>, which does a good job of illuminating the hologram because it is a point source, single white LED. Pretty awesome!<br />
<br />
Here is what the mesh looked like in MeshLab after I captured it:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-vyvR2PlYXMM/Uu_Z7vSnTJI/AAAAAAAABnE/C_V07qUdFyk/s1600/carla1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-vyvR2PlYXMM/Uu_Z7vSnTJI/AAAAAAAABnE/C_V07qUdFyk/s1600/carla1.jpg" height="320" width="254" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-cnxFMEr8EJo/Uu_Z7jn6Q1I/AAAAAAAABnI/fhM5boUAKic/s1600/carla2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-cnxFMEr8EJo/Uu_Z7jn6Q1I/AAAAAAAABnI/fhM5boUAKic/s1600/carla2.jpg" height="320" width="229" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-L7o6Kr6HIDE/Uu_Z7v-szJI/AAAAAAAABnk/Gejp-AH3Q5M/s1600/carla3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-L7o6Kr6HIDE/Uu_Z7v-szJI/AAAAAAAABnk/Gejp-AH3Q5M/s1600/carla3.jpg" height="320" width="243" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-qpRxtqQS09w/Uu_Z72jcruI/AAAAAAAABnM/hI-fq6CVAfw/s1600/carla4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-qpRxtqQS09w/Uu_Z72jcruI/AAAAAAAABnM/hI-fq6CVAfw/s1600/carla4.jpg" height="320" width="260" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-xP6JLW9icMs/Uu_Z8NARiwI/AAAAAAAABnU/GnG4iO2ue1s/s1600/carla5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-xP6JLW9icMs/Uu_Z8NARiwI/AAAAAAAABnU/GnG4iO2ue1s/s1600/carla5.jpg" height="320" width="255" /></a></div>
<br />t11shttp://www.blogger.com/profile/08011978834331908728noreply@blogger.com0